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

如何合并列表中厂商与货号相同的元组并对quantity求和

合并相同厂商货号的元组(数量求和)

原始数据:

data = [('Microsoft', 'A001', 4.5, 20), ('Dell', 'A002', 8.9, 10), ('Acer', 'A001', 7.5, 5), ('Dell', 'A001', 2.5, 8), ('Microsoft', 'C002', 3.5, 10), ('Microsoft', 'A001', 4.5, 15)]

需求说明

每个元组的元素依次为:厂商、货号、价格、数量。需要将首两个元素(厂商+货号)完全相同的元组合并,合并时保留厂商、货号、价格,将对应数量求和。

预期结果

result = [('Microsoft', 'A001', 4.5, 35), ('Dell', 'A002', 8.9, 10), ('Acer', 'A001', 7.5, 5), ('Dell', 'A001', 2.5, 8), ('Microsoft', 'C002', 3.5, 10)]

解决方案

可以用字典实现分组累加,利用厂商+货号的组合作为唯一键,确保相同组合的元组被正确合并:

merged_dict = {}
for manufacturer, article_no, price, quantity in data:
    key = (manufacturer, article_no)
    if key in merged_dict:
        # 累加数量
        merged_dict[key] = (manufacturer, article_no, price, merged_dict[key][3] + quantity)
    else:
        merged_dict[key] = (manufacturer, article_no, price, quantity)

# 将字典值转换为列表,得到最终结果
result = list(merged_dict.values())
print(result)

代码说明

  1. 遍历原始列表中的每个元组,拆解出四个元素;
  2. 用(厂商, 货号)作为字典的键,确保相同组合的元组会被归为同一键下;
  3. 若键已存在,就将当前数量与已存储的数量相加,更新字典值;若不存在,直接将当前元组存入字典;
  4. 最后将字典的所有值转为列表,即为合并后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:45:51