Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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 如何在json中以特定的方式访问元素?_Python_Json - Fatal编程技术网

Python 如何在json中以特定的方式访问元素?

Python 如何在json中以特定的方式访问元素?,python,json,Python,Json,我想学习JSON,我正在使用Python。我目前有一个关于如何访问元素的问题。下面是JSON信息的一般示例: "data":{ "Bob":{ "name":"Bob", "age":"30", "state":"California", "job":"accountant" }, "Joe":{ "name":"Bob", "age":"30", "state":"Florida",

我想学习JSON,我正在使用Python。我目前有一个关于如何访问元素的问题。下面是JSON信息的一般示例:

"data":{
   "Bob":{
      "name":"Bob",
      "age":"30",
      "state":"California",
      "job":"accountant"
   },
   "Joe":{
      "name":"Bob",
      "age":"30",
      "state":"Florida",
      "job":"engineer"
   },
   "Tom":{
      "name":"Bob",
      "age":"25",
      "state":"North Dakota",
      "job":"manager"
   }
}
现在,我想为循环创建一个
,它将获得所有30岁的名字的列表。我该怎么做呢。我试过这样做:

array = []
for x in range(0,3):
    if data[x]['age'] is '30' 
    array.append(data[x])
但这绝对是错误的。有人能教我如何用这种方式对JSON中的项目进行排序吗?

试试这个:

data = {
  "Bob":{
      "name":"Bob",
      "age":"30",
      "state":"California",
      "job":"accountant"
   },
   "Joe":{
      "name":"Bob",
      "age":"30",
      "state":"Florida",
      "job":"engineer"
   },
   "Tom":{
      "name":"Bob",
      "age":"25",
      "state":"North Dakota",
      "job":"manager"
   }
}

names = []
for name, information in data.items():
    if information['age'] == '30':
        names.append(name)

print(names)

如果您有一个名为data的dictionary对象,那么可以使用data.items()迭代dictionary的键('Bob','Joe','Tom')和值。您可以在这里查看文档:

您可以通过JSON数据进行迭代,就像通过Python dict一样

import json

with open('data.json') as json_file:
    input_data = json.load(json_file)

data = []
# use dict function items that iterate via key, value in our cause k - key, v - value
for k, v in input_data['data'].items():
    if v['age'] == '30':
        data.append(v)

print(data)
输出:

[{'name': 'Bob', 'age': '30', 'state': 'California', 'job': 'accountant'}, {'name': 'Bob', 'age': '30', 'state': 'Florida', 'job': 'engineer'}]


正如OP提到的,他是新来的;你应该试着为你的答案提供更多的解释。你期望得到什么结果?为什么您认为您的代码是错误的?您正在迭代一个dict。关于dict的任何教程都会介绍如何做到这一点。这是因为在您的示例中,它是一个Python字典。
json_data = {"data":{
   "Bob":{
      "name":"Bob",
      "age":"30",
      "state":"California",
      "job":"accountant"
   },
   "Joe":{
      "name":"Bob",
      "age":"30",
      "state":"Florida",
      "job":"engineer"
   },
   "Tom":{
      "name":"Bob",
      "age":"25",
      "state":"North Dakota",
      "job":"manager"
   }
}
}
names = []
for k, v in json_data['data'].items():
  if v['age'] == '30':
    names.append(k)

print(names)