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

如何对元组列表形式的Python字典按分组计算值总和?

Python分组字典值高效求和实现

问题说明

现有元素为元组的Python列表,每个元组结构固定:

  • 第一位:分组编号
  • 第二位:字典,存储分组下各编号对应的数值
    需要计算每个分组内字典所有值的总和,替代性能开销较高的纯手动遍历累加写法。

示例输入

raw_data = [
    ('1', {'1': 0, '3': 1, '2': 1, '5': 2, '303': 3}),
    ('2', {'4': 0, '5': 1, '7': 1, '5': 2, '303': 2}),
    ('3', {'1': 0, '3': 0, '2': 0, '5': 2, '303': 3})
]

期望输出

[('1', 7), ('2', 6), ('3', 5)]

注:输入字典中如果存在重复键,Python原生字典会自动保留最后一次写入的键值对,无需额外做去重处理,和示例计算逻辑一致。

最优实现方案

直接使用Python内置函数配合列表推导式实现,底层为C实现,性能远高于纯Python层手写循环累加:

result = [(group_id, sum(val_dict.values())) for group_id, val_dict in raw_data]

性能优势说明

  • 字典的values()方法返回动态视图对象,不会额外复制字典值生成新列表,内存开销极低
  • 内置sum()函数在C层面完成累加计算,相比纯Python写for循环逐值相加,数据量越大性能差距越明显,常规场景下速度可达手写循环的2~3倍
  • 列表推导式相比普通for循环+append的写法,执行效率也有明显优势

结果校验

运行上述代码后输出结果和预期完全匹配:

print(result)
# [('1', 7), ('2', 6), ('3', 5)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:33:24