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

如何对二维数组去重并累加重复元素对应数值

二维数组同名字段累加去重实现方案

核心实现逻辑很简单,分三步处理即可:

  • 用字典做中间存储结构,以不重复的物质名称作为字典键,对应累计数量作为字典值
  • 遍历原数组的每一条记录,遇到已存在的物质名称就累加数量,不存在就直接写入初始值
  • 遍历完成后把字典转回要求的二维列表格式

无依赖基础实现

不需要引入任何额外库,全版本Python通用:

total_list = [['Argon', 1], ['Hematite', 1], ['Organic', 1], ['Argon', 1], ['Hematite', 1], ['Organic', 1], ['Graphite', 2], ['Ammonium', 4], ['Hydrogen', 2]]

count_map = {}
for material, quantity in total_list:
    if material in count_map:
        count_map[material] += quantity
    else:
        count_map[material] = quantity

# 转换为要求的二维数组格式
result = [[item, count] for item, count in count_map.items()]

针对你给出的测试用例,运行后得到的结果为:
[['Argon', 2], ['Hematite', 2], ['Organic', 2], ['Graphite', 2], ['Ammonium', 4], ['Hydrogen', 2]],和你举例的片段处理规则完全匹配。

简洁版标准库实现

如果允许使用Python标准库,可以用collections.defaultdict省略键存在判断,代码更精简:

from collections import defaultdict

total_list = [['Argon', 1], ['Hematite', 1], ['Organic', 1], ['Argon', 1], ['Hematite', 1], ['Organic', 1], ['Graphite', 2], ['Ammonium', 4], ['Hydrogen', 2]]
count_map = defaultdict(int)
for material, quantity in total_list:
    count_map[material] += quantity
result = [[item, count] for item, count in count_map.items()]

注意:Python 3.7及以上版本的原生字典默认保留插入顺序,最终输出的物质顺序和该物质第一次在原列表出现的顺序一致;如果是更低版本Python且需要保留插入顺序,可以把中间存储的字典替换为collections.OrderedDict即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:42:38