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

Python3 如何遍历数组对相同service_general_id的qty值求和

实现逻辑与代码

核心思路是利用字典key的唯一性做分组累加,最后转换为目标格式的列表即可。

方法1:原生Python实现(无额外依赖)

# 你的原始数据集
data_set = [{'service_general_id': 46, 'service_general_qty': 1000.0}, {'service_general_id': 46, 'service_general_qty': 56000.0}, {'service_general_id': 44, 'service_general_qty': 56000.0}]

# 临时存储每个id对应的求和结果
sum_map = {}

for item in data_set:
    current_id = item['service_general_id']
    current_qty = item['service_general_qty']
    if current_id in sum_map:
        sum_map[current_id] += current_qty
    else:
        sum_map[current_id] = current_qty

# 转换为目标格式
data_result = [{'service_general_id': k, 'service_general_qty': v} for k, v in sum_map.items()]

Python 3.7及以上版本会自动保留id第一次出现的顺序,输出结果和你预期的完全一致。

方法2:使用defaultdict简化判空逻辑

如果你不介意引入标准库的collections模块,可以简化判断key是否存在的逻辑:

from collections import defaultdict

data_set = [{'service_general_id': 46, 'service_general_qty': 1000.0}, {'service_general_id': 46, 'service_general_qty': 56000.0}, {'service_general_id': 44, 'service_general_qty': 56000.0}]
sum_map = defaultdict(float)

for item in data_set:
    sum_map[item['service_general_id']] += item['service_general_qty']

data_result = [{'service_general_id': k, 'service_general_qty': v} for k, v in sum_map.items()]

如果你使用的原变量名是provisiones_originales_dict,只需要把遍历对象data_set替换为该变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03