尝试按键查找值时收到错误(python)

时间:2017-11-23 15:40:59

标签: python json

当我尝试在我的json数据中检索“Q1”时,我收到错误:“字符串索引必须是整数”。

success=true

我可以检索该项目。

{  
   "ID_54321":{  
      "Name":"John Doe",
      "Email":"jdoe@gmail123.com",
      "Q1":"3"
   }
}

结果

for key in data:
  for item in data[key]:
   print item

问题是我无法检索我想要检索的项目的值。

Name
Email
Q1

我收到错误:

 for key in data:
      for item in data[key]:
       print item["Q1"]

3 个答案:

答案 0 :(得分:1)

data[key]中循环播放时,您可以使用data[key][item]获得价值:

data = {
    "ID_54321": {
        "Name": "John Doe",
        "Email": "jdoe@gmail123.com",
        "Q1": "3"
    }
}

for key in data:
    for item in data[key]:
        print data[key][item]

答案 1 :(得分:1)

首先,我假设您正在讨论迭代字典而不是JSON对象,因为JSON是数据的字符串表示,而字典是数据结构。

在你的情况下,“item”是一个字符串(实际上是来自嵌套dict的键的名称),因此你无法从中获取你的值。

如果您只想查看“Q1”键的值,可以执行以下操作:

for key in data.iterkeys():
   print data[key]['Q1']

但是假设您想要从嵌套字典中打印每个值而不仅仅是'Q1',它可能是:

for key in data.iterkeys():
    for k, v in data[key].iteritems():
       print k, v

其中k是每个键的名称,v是相应的值。
在Python 3.X中它看起来像这样:

for item in data.keys():
    for k,v in data[item].items():
        print(k,v)

答案 2 :(得分:0)

item["Q1"]会给您一个错误,因为item是一个字符串。你想要做的是访问内部字典的键值,所以尝试将其改为:

for key in data:
    for item in data[key]:
        print data[key][item]