gpt4 book ai didi

python - 从另一个字典 python 列表更新字典列表

转载 作者:行者123 更新时间:2023-12-04 03:26:18 24 4
gpt4 key购买 nike

list1 = [
{"code": 1, "a": 7, "b": 9, "c": 24},
{"code": 2, "a": 78, "b": 12, "c": 45},
{"code": 3, "a": 3, "b": 5, "c": 16}
]
list2=[
{"code": 1, "a": 45, "b": 21, "c": 24},
{"code": 2, "a": 84, "b": 7, "c": 55}
]

输出:

list1 = [
{"code": 1, "a": 45, "b": 21, "c": 24},
{"code": 2, "a": 84, "b": 7, "c": 55},
{"code": 3, "a": 3, "b": 5, "c": 16}
]

我需要根据 list2 使用相同的键 “code” 更新 list1。我试过:

update_mapping = {k["code"]: k for k in list2}
list1 = [update_mapping.get(k["code"], k) for k in list1]

但是没有用。

最佳答案

与任何查找问题一样,字典是您的好 helper 。将您的列表转换为由代码键入的内容:

d1 = {d['code']: d for d in list1}
d2 = {d['code']: d for d in list2}
d1.update(d2)
list1 = list(d1.values())

字典在 Python 3.6+ 中是有序的,update 保留了键顺序,所以这将完美地工作。对于之前的版本,使用 collections.OrderedDict(在 Python 3.6+ 中仍然可用):

from collections import OrderedDict

d1 = OrderedDict((d['code'], d) for d in list1)
d2 = OrderedDict((d['code'], d) for d in list2)
d1.update(d2)
list1 = list(d1.values())

关于python - 从另一个字典 python 列表更新字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67510109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com