首页 > 解决方案 > Python 迭代排除类型不是 bool、float、int 或非 NoneType (TypeError: 'NoneType' object is not iterable)

问题描述

我正在尝试迭代 JSON 文件及其元素。问题是,如果第一次迭代(元素)的值是 bool/float/int 或 NoneType 类型,则会引发错误消息。

这是我的尝试(它适用于 bool、float 和 int 但抛出 TypeError: 'NoneType' object is not iterable):

for element in json:
    if type(element) != bool \
                    and type(element) != float \
                    and type(element) != int \
                    and type(element) is not None:
    for value in json[element]:
        print(value)

还有一种方法可以缩短 Python 中的代码吗?

标签: pythonloopsif-statementiteration

解决方案


在 Python 中,只做它并处理任何异常是很常见的。

for element in json:
    try:
        for value in element:
            print(value)
    except TypeError:
        pass

另外,您确定要迭代json[element]还是只element在内部 for 循环中进行迭代?


推荐阅读