如何在列表中合并两个或多个词典?

时间:2016-01-28 12:14:51

标签: python-2.7

在列表中合并字典有什么好的pythonic方法吗?

我有什么:

[
    { 'name': "Jack" },
    { 'age': "28" }
]

我想要的是什么:

[
    { 'name': "Jack", 'age': "28" }
]

4 个答案:

答案 0 :(得分:1)

您可以使用列表理解:

final_list = [{key: one_dict[key]
               for one_dict in initial_list
               for key in one_dict.keys()}]

编辑:列表理解是向后的

答案 1 :(得分:1)

这是一种使用dict.update()的方法。在我看来,这是一个非常易读的解决方案:

import sys

<强>输出

  

[{&#39; age&#39;:&#39; 28&#39;,&#39; name&#39;:&#39; Jack&#39;}]

答案 2 :(得分:1)

如果您使用的是Python 3,则可以使用collections.ChainMap

>>> from collections import ChainMap
>>> ld = [
...       { 'name': "Jack" },
...       { 'age': "28" }
...      ]
>>> [dict(ChainMap(*ld))]

 [{'name': 'Jack', 'age': '28'}]

答案 3 :(得分:0)

out = reduce(lambda one, two: dict(one.items() + two.items()), 
       [{'name': 'Jack'}, {'age': '28'}, {'last_name': 'Daniels'}])
print(out)

输出

{'age': '28', 'last_name': 'Daniels', 'name': 'Jack'}