所以我有一个具有多个类别和数量属性的JSON文件。我需要分别汇总每个类别的数量,但不确定是否可以做到(或如何做到)。
这是我到目前为止的代码:
for key, value in broken_database:
if value and "quantity" in value.keys():
sum += value["quantity"]
print(sum)
它给了我这个错误信息:
ValueError: too many values to unpack (expected 2)
即使运行,此代码也不足够,因为它将仅对所有数量属性求和,而我需要对每个类别求和
我希望这至少可以汇总所有内容,因此我可以弄清楚如何区分类别,但到目前为止,我所得到的只是错误。
编辑:这是JSON文件的一部分:
[
{
"id": 1316334,
"name": "Refrigerador bottom Freezer Electrolux de 02 Portas Frost Free com 598 Litros",
"quantity": 12,
"price": 3880.23,
"category": "Eletrodom\u00e9sticos"
},
{
"id": 1911864,
"name": "Mouse Gamer Predator cestus 510 Fox Preto",
"price": 699.0,
"category": "Acess\u00f3rios",
"quantity": 0
},
编辑:现在我有此代码:
import json
with open("broken_database.json", "r+", encoding="utf-8") as file:
broken_database = json.load(file)
for key in broken_database:
estoque = sum(key["quantity"] for key in broken_database)
print(estoque)
with open("broken_database.json", "w", encoding="utf-8") as file:
json.dump(broken_database, file, indent=2)
print(broken_database)
它会汇总所有“数量”属性,但不会通过“类别”属性将总和分开
JSON对象的数据结构是字典列表,因此您应在不拆包键值对的情况下对其进行迭代,而应quantity
直接通过键获取dict值:
sum(d['quantity'] for d in broken_database)
编辑:由于您现在在注释中提到您希望按category
属性对总和进行分组,因此可以将输出改为字典,sums
在以下示例中进行命名:
sums = {}
for d in broken_database:
sums[d['category']] = sums.get(d['category'], 0) + d['quantity']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句