如何解决如何汇总一个元组对列表?
我有一个成对的列表,该列表每秒钟不断更新新值。如果每个元组中的第二个值等于每个元组中的第一个值,则需要对它们进行求和。我尝试使用字典,但是因为键是唯一的,所以它会覆盖以前的更新。
[(3.05,0.0),(3.1,863.62),(3.05,156.74)]
[(3.05,156.74),293.97)]
[(3.05,293.97),16.32)]
[(3.05,16.32),210.72)]
所需的输出:
[(3.05,383.06),1157.59)]
我不得不重新创建问题,在原始帖子中,数字是每秒从excel流入的。当我使用字典时,新的更新密钥会替换旧的密钥,并针对唯一密钥记录新的值。因此,很难将所有值与它们的键相加。这只是一个例子,更新将是excel提供的。
import collections,random,string
alpha = 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”,这些值不是彼此的和。
解决方法
您可以使用defaultdict
d = defaultdict(float)
for a,b in list_of_pairs:
d[a] += b
desired_output = list(d.items())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。