通过理解将Python列表转换为字典

时间:2014-04-10 18:55:45

标签: python list dictionary dictionary-comprehension

假设我有一些函数可以返回一个字典,然后迭代该函数。这将生成一个词典列表。我希望将其转换为字典。我正在调用我的函数:

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循环!:-))

谢谢,labjunky

1 个答案:

答案 0 :(得分:2)

您可以使用dict.update方法合并词条:

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

你也可以使用(双循环)字典理解:

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

最后,如果您对this question采取任何答案,对于合并两个dicts(并将其命名为merge_dicts),您可以使用reduce合并两个以上:

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

无论哪种方式,如果重复dict键,以后的键会覆盖之前的