为了账号安全,请及时绑定邮箱和手机立即绑定

如何对元组对列表求和?

如何对元组对列表求和?

慕村225694 2023-07-05 16:36:06
我有一个配对列表,每秒不断更新新值。如果每个元组中的第二个值等于每个元组中的第一个值,我需要对它们进行求和。我尝试过使用字典,但由于键是唯一的,它会覆盖以前的更新。[(3.05, 0.0), (3.1, 863.62), (3.05, 156.74)][(3.05, 0.0), (3.1, 863.62), (3.05, 156.74), (3.1, 293.97)][(3.05, 0.0), (3.1, 863.62), (3.05, 156.74), (3.1, 293.97), (3.05, 16.32)][(3.05, 0.0), (3.1, 863.62), (3.05, 156.74), (3.1, 293.97), (3.05, 16.32), (3.05, 210.72)]期望的输出:[(3.05, 383.06), (3.1, 1157.59)]我不得不重现这个问题,在原来的帖子中,数字每秒从 Excel 流入。当我使用字典时,新的更新键将替换旧的键,并根据唯一键记录新值。因此,很难将所有值与它们的键相加。这只是一个示例,更新将是 excel 提供的任何内容。import collections ,random, stringalpha = list(string.ascii_letters)lst_a = []lst_b = []for i in range(100):    lst_a.append(alpha[random.choice(range(25))])    lst_b.append(random.choice(range(1000)))combine = dict(zip(lst_a,lst_b))print(combine.get('a'))update = list(zip(['a'],[2000]))combine.update(update)print(combine.get('a'))例如,使用键“a”,这些值不是彼此之和。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

你可以使用默认字典

d = defaultdict(float)

for a, b in list_of_pairs:

    d[a] += b

desired_output = list(d.items())


查看完整回答
反对 回复 2023-07-05
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信