Python2: 检查字典值时出现类型错误

Python2: TypeError while checking dictionary value

我有以下 Python 代码来遍历嵌套字典并从第二个 child 中获取一个值:

ret = some_dict
for item, val in ret.items():
    for item2, val2 in val.items():
        print val2['result']

当我在 IPython 或交互式 Python 解释器中对此进行测试时,代码工作正常,并为字典中的每个项目打印 val2['result'] 的值。但是,当我在 Python 程序中使用此代码块时,在尝试打印 val2['result']:

时出现以下错误

TypeError: string indices must be integers, not str

如果我打印 json.dumps(val2, indent=2),我可以看到字典的格式是正确的。尝试使用 dict() 将 val2 转换为脚本中的字典也会失败,并出现以下错误:

ValueError: dictionary update sequence element #0 has length 1; 2 is required

我不完全确定我在这一点上做错了什么,因为代码在交互式解释器中工作。我正在使用 Python 2.7.6,用例正在迭代 Saltstack Python 客户端返回的字典。

相信这个消息:当你认为val2是一个字典时,它告诉你它是一个字符串。这几乎可以肯定是由于您的 JSON 数据没有按照您认为的那样构建。