如何将两个字典列表合并在一起,同时用同一个键分组



我的两个字典看起来像这个

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)]

但我不知道如何按地址分组。感谢您的帮助

你走在了正确的轨道上。你可以做一些类似的事情:

[{**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'}]

请注意,列表理解可能不是最好的主意,因为它缺少breakcontinue命令。也许它对这样的东西更有效

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'}]

最新更新