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

Python迭代JSON如何排除bool/float/int/NoneType并简化代码

问题修复与代码简化方案

报错原因

  • 缩进错误:内层遍历for value in json[element]没有缩进在if判断分支内,无论类型判断结果如何都会执行,遇到None等不可迭代的基础类型直接触发报错
  • 类型判断对象错误:当前判断的是JSON字典的键(element)的类型,而非你需要遍历的字典值(json[element])的类型,值为None时不会被过滤
  • 类型判断写法冗余:多条件拼接的type判断不符合Python惯用写法,可读性差
  • 变量名风险:用json作为变量名会和Python标准库的json模块重名,容易引发后续调用异常

修复后简化代码

我们直接用items()同时获取键和值,用isinstance批量判断类型,用continue提前跳过不需要处理的类型,逻辑更清晰:

# parsed_json是你读取JSON文件后解析得到的Python字典
for key, value in parsed_json.items():
    # 跳过bool、int、float、None四类不需要遍历的类型
    if isinstance(value, (bool, int, float, type(None))):
        continue
    # 遍历剩余可迭代类型的值
    for val in value:
        print(val)

补充说明

Python中bool是int的子类,isinstance(True, int)会返回True,如果你后续需要调整过滤规则,注意bool类型的优先级即可。如果你的JSON解析后可能存在列表顶层结构,可以额外加一层类型判断处理列表场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:54:03