首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将一个字典列表合并为一个字典?

如何将一个字典列表合并为一个字典?
EN

Stack Overflow用户
提问于 2010-08-16 23:55:58
回答 10查看 123.9K关注 0票数 178

我怎么能把像这样的字典列表..

代码语言:javascript
复制
[{'a':1}, {'b':2}, {'c':1}, {'d':2}]

...into单个字典,如下所示:

代码语言:javascript
复制
{'a':1, 'b':2, 'c':1, 'd':2}
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-08-17 00:56:48

这适用于任何长度的字典:

代码语言:javascript
复制
>>> result = {}
>>> for d in L:
...    result.update(d)
... 
>>> result
{'a':1,'c':1,'b':2,'d':2}

作为comprehension

代码语言:javascript
复制
# Python >= 2.7
{k: v for d in L for k, v in d.items()}

# Python < 2.7
dict(pair for d in L for pair in d.items())
票数 225
EN

Stack Overflow用户

发布于 2016-01-13 13:50:50

对于Python 3.3+,有一个ChainMap collection

代码语言:javascript
复制
>>> from collections import ChainMap
>>> a = [{'a':1},{'b':2},{'c':1},{'d':2}]
>>> dict(ChainMap(*a))
{'b': 2, 'c': 1, 'a': 1, 'd': 2}

另请参阅:

票数 141
EN

Stack Overflow用户

发布于 2018-05-05 00:29:33

这与@delnan类似,但提供了修改k/v (键/值)项的选项,我认为更具可读性:

代码语言:javascript
复制
new_dict = {k:v for list_item in list_of_dicts for (k,v) in list_item.items()}

例如,按如下方式替换k/v元素:

代码语言:javascript
复制
new_dict = {str(k).replace(" ","_"):v for list_item in list_of_dicts for (k,v) in list_item.items()}

从列表中拉出dict对象后,从字典.items()生成器中解包k,v元组

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3494906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档