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

如何合并列表中元素名重复的子列表并累加对应数值

解决方案

直接用字典来处理是最高效的方式,既能自动去重,又能快速累加数值,以下两种方法都能搞定你的需求:

方法一:基础字典实现(无需额外导入模块)

mylist = [['Smith, Karen','10'],['Miller, Michael','20'],['Smith, Karen','30'],['Taylor, Peter','95']]

# 初始化空字典存储姓名和对应累加值
name_total = {}
for name, num_str in mylist:
    # 将字符串数字转为整数以便累加
    num = int(num_str)
    if name in name_total:
        name_total[name] += num
    else:
        name_total[name] = num

# 将字典转回要求的列表格式,数值转回字符串
merged_list = [[name, str(total)] for name, total in name_total.items()]
print(merged_list)

运行后输出:

[['Smith, Karen', '40'], ['Miller, Michael', '20'], ['Taylor, Peter', '95']]

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

如果不想写判断逻辑,可以用defaultdict自动处理初始值:

from collections import defaultdict

mylist = [['Smith, Karen','10'],['Miller, Michael','20'],['Smith, Karen','30'],['Taylor, Peter','95']]

name_total = defaultdict(int)
for name, num_str in mylist:
    name_total[name] += int(num_str)

merged_list = [[name, str(total)] for name, total in name_total.items()]
print(merged_list)

这个方法和上面的效果完全一样,只是代码更简洁。

两种方法处理4000条数据都非常高效,不用单独提取重复姓名,遍历一次列表就能完成合并和累加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:19:55