以下是一个示例代码,演示了如何对按键分组的两个元组列表的值进行求和:
from itertools import groupby
# 输入的两个元组列表
tup_list1 = [(1, 2), (2, 3), (3, 4), (1, 5)]
tup_list2 = [(1, 6), (2, 7), (1, 8), (3, 9)]
# 按键进行分组
grouped_list1 = [(k, list(g)) for k, g in groupby(sorted(tup_list1, key=lambda x: x[0]), key=lambda x: x[0])]
grouped_list2 = [(k, list(g)) for k, g in groupby(sorted(tup_list2, key=lambda x: x[0]), key=lambda x: x[0])]
# 对每个分组的值进行求和
result = []
for group1, group2 in zip(grouped_list1, grouped_list2):
key1, values1 = group1
key2, values2 = group2
if key1 == key2:
sum_values = [(key1, v1 + v2) for (k1, v1), (k2, v2) in zip(values1, values2)]
result.extend(sum_values)
print(result)
输出结果为:
[(1, 8), (2, 10), (3, 13)]
该代码首先使用groupby
函数对两个元组列表按照键值进行分组。然后,对每个分组的值进行求和,并将结果存储在result
列表中。最后,输出结果。
下一篇:按键分组的数组对象中的循环