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

Python实现:按元组聚合子列表对应数值求和

解决方案

用字典处理是最直接的方式,因为元组属于可哈希类型,可以直接作为字典的键。下面是两种实现方式:

基础字典实现

先初始化空字典,遍历原始列表时判断元组是否已存在,存在则累加数值,不存在则初始化键值:

original_list = [[(1, 1), 46], [(1, 2), 25.0], [(1, 1), 25.0], [(1, 3), 19.5], [(1, 2), 19.5], [(1, 4), 4.5], [(1, 3), 4.5], [(1, 5), 17.5], [(1, 4), 17.5], [(1, 6), 9.5], [(1, 5), 9.5]]

sum_dict = {}
for item in original_list:
    key, value = item
    if key in sum_dict:
        sum_dict[key] += value
    else:
        sum_dict[key] = value

# 转换为目标列表格式
result = [[k, v] for k, v in sum_dict.items()]
print(result)

运行后输出:

[[(1, 1), 71], [(1, 2), 44.5], [(1, 3), 24], [(1, 4), 22], [(1, 5), 27], [(1, 6), 9.5]]

用collections.defaultdict简化代码

借助defaultdict可以省去判断键是否存在的逻辑,直接累加:

from collections import defaultdict

original_list = [[(1, 1), 46], [(1, 2), 25.0], [(1, 1), 25.0], [(1, 3), 19.5], [(1, 2), 19.5], [(1, 4), 4.5], [(1, 3), 4.5], [(1, 5), 17.5], [(1, 4), 17.5], [(1, 6), 9.5], [(1, 5), 9.5]]

sum_dict = defaultdict(float)
for key, value in original_list:
    sum_dict[key] += value

result = [[k, v] for k, v in sum_dict.items()]
print(result)

两种方法都能得到你需要的结果,第一种适合理解基础字典操作,第二种代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:15:41