gpt4 book ai didi

python - 两个按键分组的元组列表中的值求和

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:56 24 4
gpt4 key购买 nike

我有两个元组列表,我想按每个键(键,值)对总数进行分组。

请注意 key 142。

a = [(1713, 1L), (745, 1L), (142, 1L)]
b = [(1298, 1L), (620, 1L), (142, 1L)]

a_b = [(1713, 1L), (745, 1L), (1298, 1L), (620, 1L), (142, 2L)]

我正在尝试这个,但是当 b 中的 key 是新的时显然会失败:

d={}
for k,v in a:
for k1,v1 in b:
if k == k1:
print k
d[k] = v+v1
else:
d[k] = v
print d #{1713: 1L, 142: 2L, 745: 1L}

最佳答案

您可以通过反向迭代 ab 的组合列表来使用 collections.OrderedDict,因为后者是重复键在您的合并逻辑中优先考虑,之后您可以通过再次反转 dict 项目列表来获得所需的元组列表:

from collections import OrderedDict
d = OrderedDict()
for k, v in reversed(a + b):
d[k] = d.get(k, 0) + v
a_b = d.items()[::-1]

a_b 变成:

[(1713, 1L), (745, 1L), (1298, 1L), (620, 1L), (142, 2L)]

编辑:由于您现在在评论中提到输出的顺序无关紧要,因此您可以像在问题中那样使用常规字典。这里的关键是遍历ab的组合列表,使用dict.get方法默认a的初始值0 的键:

d = {}
for k, v in a + b:
d[k] = d.get(k, 0) + v
a_b = d.items()

关于python - 两个按键分组的元组列表中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54838100/

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