在列表中合併字典是否有任何不錯的pythonic方式?如何合併列表中的兩個或更多字典?
我有什麼:
[
{ 'name': "Jack" },
{ 'age': "28" }
]
我想什麼:
[
{ 'name': "Jack", 'age': "28" }
]
在列表中合併字典是否有任何不錯的pythonic方式?如何合併列表中的兩個或更多字典?
我有什麼:
[
{ 'name': "Jack" },
{ 'age': "28" }
]
我想什麼:
[
{ 'name': "Jack", 'age': "28" }
]
這是一個方法使用dict.update()
。在我看來,這是一個非常可讀的解決方案:
data = [{'name': 'Jack'}, {'age': '28'}]
new_dict = {}
for d in data:
new_dict.update(d)
new_data = [new_dict]
print new_data
輸出
[{ '年齡': '28', '名': '傑克'}]
你可以使用列表理解:
final_list = [{key: one_dict[key]
for one_dict in initial_list
for key in one_dict.keys()}]
編輯:列表理解爲向後
如果您使用Python 3,則可以使用collections.ChainMap
:
>>> from collections import ChainMap
>>> ld = [
... { 'name': "Jack" },
... { 'age': "28" }
... ]
>>> [dict(ChainMap(*ld))]
[{'name': 'Jack', 'age': '28'}]
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'}