我正在使用通过导入/解析JSON创建的jython中的字典。使用某些部分,我会看到以下消息:

TypeError: str indices must be integers


当我执行以下操作时会发生这种情况:

if jsondata['foo']['bar'].lower() == 'baz':
    ...


jsondata如下所示:

{'foo': {'bar':'baz'} }


这是什么意思,我该如何解决?

最佳答案

您需要先从dict中获取数据,然后再检查dict的类型以及dict中是否存在“ z”。

>>> jsondata = {'a': '', 'b': {'z': True} }
>>> for key in jsondata:
...     if type(jsondata[key]) is dict and 'z' in jsondata[key].keys() and jsondata[key]['z'] is True:
...         print 'yes'
...
yes
>>>

或更短的dict.get
>>> jsondata = {'a': '', 'b': {'z': True}, 'c' :{'zz':True}}
>>> for key in jsondata:
...     if type(jsondata[key]) is dict and jsondata[key].get('z',False):
...         print 'yes'
...
yes
>>>

关于python - “str索引必须为整数”是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2720326/

10-13 04:37