2

假设我有一些返回字典的函数,然后我遍历该函数。这将产生一个字典列表。我希望将其转换为字典。我这样调用我的函数:

x = [_myfunction(element) for element in list_of_elements]

结果说x:

x = [{'one': {'two':'2'}, 'three' : '3'}, {'four':'five', 'six':{'seven':7}}]

我希望转换为 y:

y = {'one': {'two':'2'}, 'three' : '3', 'four':'five', 'six':{'seven':7}}

有没有一种方法可以在 list_of_elements 上调用 _myfunction(),从而直接产生 y?也许用字典理解而不是上面的列表理解?或者将 x 转换为 y 的最简洁的代码是什么。(希望不要无聊并使用 for 循环!:-))

谢谢,实验室迷

4

1 回答 1

2

您可以使用dict.update方法合并字典:

y = {}
for element in list_of_elements:
  y.update(_myfunction(element))

您还可以使用(双循环)dict-comprehension:

y = {
    k:v
    for element in list_of_elements
    for k,v in _myfunction(element).items()
}

最后,如果您对此问题的任何答案,对于合并两个字典(并命名merge_dicts),您可以使用reduce合并两个以上:

dicts = [_myfunction(element) for element in list_of_elements]
y = reduce(merge_dicts, dicts, {})

无论哪种方式,在重复 dict 键的情况下,后面的键会覆盖前面的键

于 2014-04-10T18:58:19.290 回答