我有以下Python代码迭代嵌套字典并从第二个孩子中获取值:
ret = some_dict
for item, val in ret.items():
for item2, val2 in val.items():
print val2['result']
当我在IPython或交互式Python解释器中测试它时,代码工作正常,并为字典中的每个项打印val2 [' result']的值。但是,当我在Python程序中使用这段代码时,在尝试打印val2时出现以下错误['结果']:
TypeError:字符串索引必须是整数,而不是str
如果我打印json.dumps(val2,indent = 2),我可以看到字典是正确形成的。尝试使用dict()将val2强制转换为脚本中的字典也会失败,并显示以下错误:
ValueError:字典更新序列元素#0的长度为1; 2是必需的
由于代码在交互式解释器中工作,我现在还不完全确定我做错了什么。我使用的是Python 2.7.6,用例是在Saltstack Python客户端返回的字典上进行迭代。
答案 0 :(得分:2)
相信消息:当你认为它是一个字典时,它告诉你val2
是一个字符串。这几乎可以肯定是因为您的JSON数据没有按照您的想法进行结构化。