我的兩本字典是這樣的
list1 = [{'time': '2020', 'name': 'one', 'address': '15423'},{'time': '2021', 'name': 'two', 'address': '8548305'}]
list2 = [{'to': '15423', 'value': '5'}, {'to': '8548305', 'value': '90'}, {'to': '123', 'value': '5'}]
我希望我的最終字典串列看起來像這樣。另外,如果字典沒有來自另一個字典串列的匹配項,我不想考慮字典
list3 = [{'time': '2020', 'name': 'one', 'address': '15423', 'value': '5'}, {'time': '2021', 'name': 'two', 'address': '8548305', 'value': '90'}]
這是我嘗試過的
[lst1.update(lst2) for lst1, lst2 in zip(list1, list2)]
但我不知道如何按地址分組。感謝你的幫助
uj5u.com熱心網友回復:
你在正確的軌道上。您可以執行以下操作:
[{**lst1 , **lst2} for lst1 in list1 for lst2 in list2 if lst1["address"] == lst2["address"]]
輸出
[{'address': '15423', 'name': 'one', 'time': '2020', 'value': '5'},
{'address': '8548305', 'name': 'two', 'time': '2021', 'value': '90'}]
請注意,串列理解可能不是最好的主意,因為它缺少break和continue命令。也許這樣更有效:
for index,lst1 in enumerate(list1):
for lst2 in list2:
if lst2["address"] == lst1["address"]:
list1[index]["value"] = lst2["value"]
break
list1
輸出
[{'address': '15423', 'name': 'one', 'time': '2020', 'value': '5'},
{'address': '8548305', 'name': 'two', 'time': '2021', 'value': '90'}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447805.html
上一篇:在c#中將鍵值對串列添加到字典中
下一篇:覆寫資料框字典中的資料框
