Python - 获取具有相同第一个值的元组的和
元组是 Python 集合或数组,有序但不可变。如果我们得到许多第一个元素相同的元组,则在需要对第一个元素相等的那些元组的第二个元素求和时,我们可能会遇到这种情况。
使用 map 和 for 循环
在此方法中,我们将首先考虑由元组组成的列表。然后将它们转换为字典,以便我们可以将元组中的元素关联为键值对。然后我们使用 for 循环,对字典中每个键的值求和。最后使用 map 函数,以获取包含已求和的值的列表。
示例
List = [(3,19),(7, 31), (7, 50), (1, 25.5), (1, 12)] # Converting it to a dictionary tup = {i:0 for i, v in List} for key, value in List: tup[key] = tup[key]+value # using map result = list(map(tuple, tup.items())) print(result)
运行以上代码会得到以下结果
输出
[(3, 19), (7, 81), (1, 37.5)]
使用集合
这里我们采用与上面类似的方法,但使用 collections 模块的 defaultdict 方法。现在我们访问字典项并将其转换为一个列表,而不是使用 map 函数。
示例
from collections import defaultdict # list of 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 # Printing output print(list(dict.items()))
运行以上代码会得到以下结果
输出
[(3, 19), (7, 81), (1, 37.5)]
广告