Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试按键查找值时收到错误(python)_Python_Json - Fatal编程技术网

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

尝试按键查找值时收到错误(python),python,json,Python,Json,当尝试在json数据中检索Q1时,我收到了一个错误:字符串索引必须是整数 { "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

当尝试在json数据中检索Q1时,我收到了一个错误:字符串索引必须是整数

{  
   "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"]
我收到了错误:

TypeError: string indices must be integers
在数据[key]中循环时,您可以使用数据[key][item]获取值:

项[Q1]给您一个错误,因为项是字符串。您要做的是访问内部字典的键值,因此请尝试将其更改为以下内容:

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

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

在您的例子中,项实际上是一个字符串,它是嵌套dict中键的名称,所以您无法从中获取值

如果您只寻找'Q1'键的值,您可以执行以下操作:

对于键入data.iterkeys: 打印数据[键]['Q1'] 但是,假设您希望打印嵌套字典中的每个值,而不仅仅是“Q1”,它可能是:

for key in data.iterkeys():
    for k, v in data[key].iteritems():
       print k, v
其中k是每个键的名称,v是对应的值。 在Python3.X中,它看起来是这样的:

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

仔细查看您的对象类型,并尝试找出错误的含义。如果同时打印密钥,则可能有助于可视化