簡體   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