Python2:检查字典值时的TypeError

时间:2016-05-09 14:29:14

标签: python json python-2.7 dictionary salt-stack

我有以下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客户端返回的字典上进行迭代。

1 个答案:

答案 0 :(得分:2)

相信消息:当你认为它是一个字典时,它告诉你val2是一个字符串。这几乎可以肯定是因为您的JSON数据没有按照您的想法进行结构化。