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

如何用Python列表推导式对嵌套元组按首个值分组求和第二个值

Python列表推导式实现分组求和代码

你可以直接用嵌套逻辑的列表推导式完成需求,写法如下:

x = [(5, 65),
 (2, 12),
 (5, 18),
 (3, 35),
 (4, 49),
 (4, 10),
 (1, 27),
 (1, 1),
 (4, 71),
 (2, 41),
 (2, 17),
 (1, 25),
 (2, 62),
 (5, 65),
 (4, 5),
 (1, 51),
 (1, 13),
 (5, 92),
 (2, 62),
 (5, 81)]
# 无需排序的版本
res = [sum(v for k, v in x if k == key) for key in {k for k, _ in x}]
# 需要按key升序排序匹配示例输出的版本
res_sorted = [sum(v for k, v in x if k == key) for key in sorted({k for k, _ in x})]
print(res_sorted) # 输出 [117, 194, 35, 135, 321]

逻辑说明

  • 首先通过集合{k for k, _ in x}提取所有元组第一个元素的唯一值作为分组依据
  • 外层列表推导式遍历每个分组key
  • 内层的生成器表达式筛选出当前key对应的所有元组第二个值,通过sum()直接求和得到当前分组的累加结果

如果你的数据量很大,更推荐用collections.defaultdict遍历一次列表完成分组,不过上述写法完全符合列表推导式的实现要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:36:02