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

标签 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

最佳答案

您可以使用 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的任何答案,要合并两个字典(并将其命名为 merge_dicts),您可以使用 reduce合并两个以上:

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

无论哪种方式,如果字典键重复,后面的键会覆盖前面的键

关于通过理解将 Python 列表转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996658/

相关文章:

python - 为什么我需要 2 对括号来声明一个数字列表

python - 使用循环更改二维列表中的多个值

python - 在循环中使用 .head() 和 pandas 时性能缓慢

java - 将保存的文件从 List<File> 递归复制到 java 中的目录中

Python:优雅地将字典与值的 sum() 合并

python - Python(或一般的 CS)中的循环或分层字典式数据结构?

python - 根据键过滤Python中的字典列表

python - 用注释注释 Python print() 输出

python - Nginx 反向代理 POST 请求背后的 CherryPy 损坏/截断

python - 从字符串导入 Python 中的模块