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



我想学习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"
}
}

现在,我想做一个for循环,获取所有 30 岁名字的列表。我要怎么做。我尝试做这样的事情:

array = []
for x in range(0,3):
if data[x]['age'] is '30' 
array.append(data[x])

但这绝对是错误的。有人可以教我如何以这种方式对 JSON 中的项目进行排序吗?

你可以通过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'}]

试试这个:

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 的字典对象,则可以使用 data.items(( 遍历字典的键('Bob'、'Joe'、'Tom'(和值。您可以在此处查看文档:https://docs.python.org/3/library/stdtypes.html#dict.items

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)