【问题标题】:How to access elements in a specific way in json?如何在json中以特定方式访问元素?
【发布时间】:2020-05-30 19:01:39
【问题描述】:

我想学习 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 中的项目进行排序吗?

【问题讨论】:

  • 您期望得到什么结果?为什么你认为你的代码是错误的?
  • 你正在遍历一个字典。如何做到这一点在任何关于 dicts 的教程中都有介绍。

标签: python json


【解决方案1】:

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

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'}]

【讨论】:

  • 那是因为在你的例子中它一个Python字典。
【解决方案2】:

试试这个:

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

【讨论】:

  • 正如 OP 所说,他是新来的;您应该尝试为您的答案提供更多解释。
【解决方案3】:
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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    相关资源
    最近更新 更多