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

移除JSON文件Stores列表内Company键值对时遇TypeError错误求助

问题分析与解决方法

先修复无效的JSON

你的目标JSON存在语法错误:第二个Store字典里的"Total_Employees"没有完整的键值对(缺少冒号和对应值),这会导致json.load()直接解析失败。先修正为有效的JSON:

{
"Company": "Apple",
"Stores": [
    {"Company" : "Apple",
     "Location" : "-",
     "Sales": "-",
     "Total_Employees": "-"
     },
    {"Company" : "Apple",
     "Location" : "-",
     "Sales": "-",
     "Total_Employees": "-"
     },
    {"Company" : "Apple",
     "Location" : "-",
     "Sales": "-",
     "Total_Employees": "-"
     }
]
}

原代码错误原因

你遇到的TypeError: 'int' object is not iterable,本质是代码逻辑完全偏离需求:

  • 遍历jsonFile.items()时,第一个键值对是"Company": "Apple",此时v是字符串,执行for key in v会逐个遍历字符串的字符,这完全不是你要处理的对象。
  • 后续testJson的赋值逻辑混乱,没有针对Stores列表内的字典做处理,反而错误覆盖变量,最终导致非可迭代对象被强制遍历。

正确实现代码

要移除Stores列表内所有字典的"Company"键值对,直接定位到目标列表并逐个处理字典即可:

import json

# 加载JSON文件
with open("stores.json", 'r') as jf:
    data = json.load(jf)

# 遍历Stores列表中的每个字典,安全删除"Company"键
for store in data["Stores"]:
    # 使用pop避免KeyError:如果字典没有"Company"键则不执行删除操作
    store.pop("Company", None)

# 可选:将处理后的数据写入新文件,保留原文件
with open("cleaned_stores.json", 'w') as jf:
    json.dump(data, jf, indent=4)

print("处理完成,已移除Stores内所有字典的Company键值对")

代码说明

  • 直接用data["Stores"]定位到需要处理的列表,避免无意义的全JSON遍历。
  • dict.pop(key, None)是安全删除键的方式:键存在则删除并返回对应值,不存在则返回None,不会抛出KeyError。
  • 最后写入新文件的操作可保留原始数据不受修改,也可直接覆盖原文件(修改写入的文件名即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:47:09