Python - 获取具有相同第一个值的元组的总和

pythonserver side programmingprogramming

元组是有序但不可更改的 Python 集合或数组。如果我们得到多个第一个元素相同的元组,那么我们可能会遇到需要添加第一个元素相等的元组的第二个元素的情况。

使用 map 和 for 循环

在此方法中,我们首先考虑由元组组成的列表。然后将它们转换为字典,以便我们可以将元组中的元素关联为键值对。然后我们应用 for 循环,对字典中每个键的值求和。最后使用 map 函数返回具有总和值的列表。

示例

List = [(3,19),(7, 31), (7, 50), (1, 25.5), (1, 12)]
# 将其转换为字典
tup = {i:0 for i, v in List}
for key, value in List:
   tup[key] = tup[key]+value
# 使用 map
result = list(map(tuple, tup.items()))
print(result)

运行上述代码得到以下结果:

输出

[(3, 19), (7, 81), (1, 37.5)]

使用集合

这里我们采用与上面类似的方法,但使用 collections 模块的 defaultdict 方法。现在我们不再使用 map 函数,而是访问字典项并将它们转换为列表。

示例

from collections import defaultdict
# tuple 列表
List = [(3,19),(7, 31), (7, 50), (1, 25.5), (1, 12)]
dict = defaultdict(int)
for key, value in List:
   dict[key] = dict[key]+value
# 打印输出
print(list(dict.items()))

运行上述代码得到以下结果

输出

[(3, 19), (7, 81), (1, 37.5)]

相关文章