繁体   English   中英

如何合并字典列表

[英]How to merge list of dicts

如何合并 Python 中的字典列表? 我有两组数据:

a = [{'date':'1/1/2019'},{'date':'1/1/2020'},{'date':'1/1/2021'}]
b = [{'value':'2'},{'value':'5'},{'value':'6'}]

如何将其合并到以下结果?

[{'date':'1/1/2019','value':'2'},
 {'date':'1/1/2020','value':'5'},
 {'date':'1/1/2021','value':'6'}]

在 Python 3.9 中,联合运算符被添加到dict ,所以这个工作:

>>> a = [{'date':'1/1/2019'},{'date':'1/1/2020'},{'date':'1/1/2021'}]
>>> b = [{'value':'2'},{'value':'5'},{'value':'6'}]
>>> [x|y for x,y in zip(a,b)]
[{'date': '1/1/2019', 'value': '2'}, {'date': '1/1/2020', 'value': '5'}, {'date': '1/1/2021', 'value': '6'}]

有关详细信息,请参阅PEP 584

c = [{**a1, **b1} for a1,b1 in zip(a,b)]

这里我使用了列表推导,**a1 和 **b1 用于解包和映射两个字典列表的键值对

假设两者都是相同长度的dictlist ,您可以这样做:

c = [{**item[0], **item[1]} for item in zip(a, b)]

[{**i[0],**i[1]} for i in zip(a,b)]

有两种方法可以做到这一点。 一种是:

for i in range(len(a)):
    a[i].update(b[i])
    
print(a)

如果您有 python 3.9 及更高版本

new_list = [a[i]|b[i] for i in range(len(a))]

检查您的 python 版本:

import sys
print (sys.version)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM