Python 如何在json中以特定的方式访问元素?
我想学习JSON,我正在使用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",
"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)