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

如何用Python对JSON中相同sifra的stanje值求和?

问题描述

我有一个在线JSON文件,数据示例如下:

{'skladiste': 1, 'sifra': '7138', 'nc': 0.8, 'vpc': 47.01, 'mpc': 55.0, 'stanje': 5.0, 'aktivan': 255, 'lokacija': '', 'atraktivanod': 0, 'atraktivando': 0}
{'skladiste': 2, 'sifra': '7138', 'nc': 0.8, 'vpc': 47.01, 'mpc': 55.0, 'stanje': 2.0, 'aktivan': 255, 'lokacija': '', 'atraktivanod': 0, 'atraktivando': 0}

我需要获取该JSON数据,对整个文件中相同sifra对应的stanje值进行求和。例如,sifra为'7138'的两条数据,stanje分别为5.0和2.0,求和后需生成仅含一条sifra为'7138'、stanje为7.0的新数据。

我已通过以下Python代码获取到JSON数据,但不知如何实现求和操作:

from urllib.request import urlopen
  
import json
url = "https://www6.eline.ba/bl/RestWebShop.svc/json/CjenovniciZaWeb/ee6e994652884578830402a297ef3a93/tobyshop"
  
response = urlopen(url)
data_json = json.loads(response.read())

print(data_json)
解决方案

可以通过字典分组统计相同sifra的stanje总和,再生成合并后的数据集,具体代码如下:

from urllib.request import urlopen
import json

url = "https://www6.eline.ba/bl/RestWebShop.svc/json/CjenovniciZaWeb/ee6e994652884578830402a297ef3a93/tobyshop"
response = urlopen(url)
data_json = json.loads(response.read())

# 用字典存储每个sifra对应的合并后数据
summed_data = {}
for item in data_json:
    sifra = item['sifra']
    if sifra not in summed_data:
        # 首次遇到该sifra,复制字段并初始化stanje总和
        summed_item = item.copy()
        summed_item['stanje'] = item['stanje']
        # 可选:移除无意义的skladiste字段
        # del summed_item['skladiste']
        summed_data[sifra] = summed_item
    else:
        # 累加stanje值
        summed_data[sifra]['stanje'] += item['stanje']

# 转换为列表形式的最终结果
result = list(summed_data.values())

# 输出结果
for item in result:
    print(item)

代码说明

  • 遍历JSON数据,以sifra为键构建字典,首次遇到某个sifra时,复制该条数据的字段并初始化stanje值;
  • 后续遇到相同sifra的条目时,直接累加其stanje值到对应字典条目;
  • 最后将字典的值转为列表,得到合并后的结果——每个sifra仅保留一条数据,stanje为对应所有条目的总和。

如果相同sifra的其他字段存在差异,可根据需求调整字段保留规则(比如取平均值、保留最新值等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:50:33