首页 > 解决方案 > Python - 根据内部列表的第一个元素对列表中的元素求和

问题描述

我有一个清单

[[0.5, 2], [0.5, 5], [2, 3], [2, 6], [2, 0.6], [7, 1]]

我需要将每个子列表中的第二个元素相加得到唯一的第一个元素的输出。在这种情况下,它是:

[[0.5, 7], [2, 9.6], [7, 1]]

[0.5, 7]的第二个元素在哪里求和。[0.5, 2][0.5, 5]

对于长度为 1,000 的说列表,最有效的方法是什么。

标签: python

解决方案


累积 a defaultdict

>>> from collections import defaultdict
>>> data = defaultdict(int)
>>> L = [[0.5, 2], [0.5, 5], [2, 3], [2, 6], [2, 0.6], [7, 1]]
>>> for k, v in L:
...     data[k] += v
...     
>>> [[k,v] for (k,v) in data.items()]
[[0.5, 7], [2, 9.6], [7, 1]]

请注意,2 的值通过加法自动“提升”为浮点数,即使这是 int 的默认字典。这是为了匹配问题中发布的所需输出,但我认为您应该考虑使用同质输出类型,而不是 int 和 float 的混合。


推荐阅读