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