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

Python实现含完全重复子列表的二维列表合并 累加重复项首元素

实现思路

用字典做合并的核心是给每个「除首元素外内容完全一致」的子列表设置唯一标识作为键,直接累加首元素即可,逻辑步骤如下:

  • 初始化空字典存储合并中间结果:字典的键是子列表除首元素外的剩余内容(转成元组,因为列表是可变类型无法作为字典键),字典的值是对应分组累加的首元素总和
  • 遍历原始二维列表的每个子列表,拆分出首元素和剩余元素部分更新字典:剩余元素对应的键已存在就累加当前首元素,不存在就新增键值对
  • 遍历完成后,把字典的键值对重新拼接成子列表格式,就是最终结果
可直接运行的代码
# 原始输入二维列表
origin_list = [[20, 2, 2, 5], [20, 2, 2, 5], [40, 2, 2, 2, 5]]
merge_dict = {}

for sub_list in origin_list:
    first_val = sub_list[0]
    # 除首元素外的部分转元组,作为分组的唯一标识
    rest_key = tuple(sub_list[1:])
    if rest_key in merge_dict:
        merge_dict[rest_key] += first_val
    else:
        merge_dict[rest_key] = first_val

# 拼接回要求的列表格式
result = [[val] + list(key) for key, val in merge_dict.items()]
print(result)

运行后输出结果为[[40, 2, 2, 5], [40, 2, 2, 2, 5]],和预期结果完全一致。

补充说明

这个写法的时间复杂度是O(n),n是原始二维列表的子列表总数,字典查找是O(1)复杂度,比两层循环遍历查重的效率高很多。不管重复的子列表有多少个,只要首元素之外的内容完全一致,就会自动累加首元素,不会改动后面的元素内容,适配同类的所有合并场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:18:15