You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按相同键对元组列表的值进行求和?

实现相同键对应值的求和

给你几种实用的实现方式,都是Python里常用的方法:

方法一:用普通字典手动处理

先创建一个空字典,遍历原元组列表,逐个处理每个键值对:

my_tuple = [('Jack', 4), ('Sam', 3), ('Jack', 2), ('Sam',5)]
sum_dict = {}
for name, num in my_tuple:
    if name in sum_dict:
        sum_dict[name] += num
    else:
        sum_dict[name] = num
result = list(sum_dict.items())
print(result)  # 输出: [('Jack', 6), ('Sam', 8)]

逻辑很直接:检查当前名字是否在字典里,在就累加数值,不在就初始化对应的值,最后把字典的键值对转成列表就行。

方法二:用collections.defaultdict简化代码

defaultdict可以帮你自动处理键不存在的情况,不用写判断语句:

from collections import defaultdict

my_tuple = [('Jack', 4), ('Sam', 3), ('Jack', 2), ('Sam',5)]
sum_dict = defaultdict(int)
for name, num in my_tuple:
    sum_dict[name] += num
result = list(sum_dict.items())
print(result)

这里指定defaultdict的默认值类型是int(默认0),所以遇到新键直接从0开始累加,代码更简洁。

方法三:用collections.Counter快速求和

Counter本身就是用来计数求和的工具,可以通过生成器表达式一次性处理:

from collections import Counter

my_tuple = [('Jack', 4), ('Sam', 3), ('Jack', 2), ('Sam',5)]
sum_counter = Counter()
for name, num in my_tuple:
    sum_counter[name] += num
result = list(sum_counter.items())
print(result)
# 或者更简洁的写法:
sum_counter = Counter()
sum_counter.update({name: num for name, num in my_tuple})
result = list(sum_counter.items())

Counter的特性很适合这种键值对求和的场景,尤其是需要频繁做累加操作的时候。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:22:15