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

通过理解将Python列表转换为字典,python,list,dictionary,dictionary-comprehension,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', 'fo

假设我有一个返回字典的函数,我迭代这个函数。这将产生一个字典列表。我想把这本书译成词典。我这样调用我的函数:

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}}
有没有一种方法可以在元素列表上调用_myfunction(),从而直接生成y?也许用字典理解而不是上面列出的理解?或者用什么最简洁的代码把x变成y。(希望不会很无聊,也不会使用for循环!:-)


谢谢,labjunky

您可以使用以下方法合并DICT:

您也可以使用(双循环)听写理解:

y = {
    k:v
    for element in list_of_elements
    for k,v in _myfunction(element).items()
}
最后,如果您选择以下任一答案,为了合并两个DICT(并将其命名为
merge\u dicts
),您可以使用来合并两个以上的DICT:

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

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

y
是一组字典,几乎不是一个改进。你想用一个字典来代替键
'one'
'three'
'four'
'six'
吗?你想要的
y
不是字典,它是由两个元素组成的元组(两个字典)。如果你真的想要一个字典,当一个键出现在两个键中时,你必须告诉我们你想要做什么(或更多)字典。opps是的,你是对的。我已经更正了。对于相同的键,可以覆盖。
dicts = [_myfunction(element) for element in list_of_elements]
y = reduce(merge_dicts, dicts, {})