gpt4 book ai didi

python - 组合多个字典列表

转载 作者:行者123 更新时间:2023-11-28 22:08:52 25 4
gpt4 key购买 nike

我有几个字典列表,其中每个字典都包含一个唯一的 id 值,该值在所有列表中都是通用的。我想将它们组合成一个字典列表,其中每个字典都连接到该 id 值。

list1 = [{'id': 1, 'value': 20}, {'id': 2, 'value': 21}]
list2 = [{'id': 1, 'sum': 10}, {'id': 2, 'sum': 11}]
list3 = [{'id': 1, 'total': 30}, {'id': 2, 'total': 32}]

desired_output = [{'id': 1, 'value': 20, 'sum': 10, 'total': 30}, {'id': 2, 'value': 21, 'sum': 11, 'total': 32}]

我尝试做类似在 https://stackoverflow.com/a/42018660/7564393 找到的答案的事情,但我很困惑,因为我有 2 个以上的列表。我应该尝试使用 defaultdict 方法吗?更重要的是,我并不总是知道其他值,只是 id 值存在于所有字典中。

最佳答案

您可以使用 itertools.groupby() :

from itertools import groupby

list1 = [{'id': 1, 'value': 20}, {'id': 2, 'value': 21}]
list2 = [{'id': 1, 'sum': 10}, {'id': 2, 'sum': 11}]
list3 = [{'id': 1, 'total': 30}, {'id': 2, 'total': 32}]

desired_output = []
for _, values in groupby(sorted([*list1, *list2, *list3], key=lambda x: x['id']), key=lambda x: x['id']):
temp = {}
for d in values:
temp.update(d)
desired_output.append(temp)

结果:

[{'id': 1, 'value': 20, 'sum': 10, 'total': 30}, {'id': 2, 'value': 21, 'sum': 11, 'total': 32}]

关于python - 组合多个字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067247/

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