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 数据没有按照您认为的那样构建。
我有以下 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 数据没有按照您认为的那样构建。