Как я могу получить информацию от объекта JSON, который включен в список? - PullRequest
0 голосов
/ 02 апреля 2020

Я сделал функцию, которая спрашивала бы пользователей, какой школьный отдел они хотят выбрать, затем я использовал бы входные данные, которые они имеют, и поместил его в запрос на получение, и вызвал API для того, чтобы классы были доступны, затем я бы сбросил информация с использованием dumps и отступы строк, чтобы было легче читать. Проблема, с которой я сталкиваюсь, заключается в том, что она помещает JSON в список, и я больше не могу индексировать его для получения информации.

Это код, который у меня есть:

dept = input('what department are you  in right now: ')
dept = dept.upper()
if dept not in department_storage:
    raise ValueError("department doesn't exist")
else:
    department_url = requests.get(f"https://api.umd.io/v0/courses?dept_id={dept}")
    specific_major =department_url.json()
    cleaner_specific_major = json.dumps(specific_major, indent=2)
    print(cleaner_specific_major)

Это JSON Я получаю обратно:

[
  {
    "course_id": "INST123",
    "semester": "202008",
    "name": "Databases for All",
    "dept_id": "INST",
    "department": "Information Studies",
    "credits": "3",
    "description": "An introduction to relational databases for students with no previous programming experience. Provides a means for students of diverse backgrounds to successfully learn how to store, retrieve, and maintain data in relational databases. Topics include a brief comparison of database systems with an emphasis on relational databases, fundamental relational database concepts, and data types. Includes technical approaches to accessing information stored in relational databases.",
    "grading_method": [
      "Regular",
      "Pass-Fail",
      "Audit"
    ],
    "gen_ed": [
      "DSSP"
    ],
    "core": [],
    "relationships": {
      "coreqs": null,
      "prereqs": null,
      "formerly": null,
      "restrictions": null,
      "additional_info": null,
      "also_offered_as": null,
      "credit_granted_for": null
    },
    "sections": [
      "INST123-0101"
    ]
  },

Есть ли индекс для получения информации из этого JSON списка? Я хотел получить из него информацию о кредитах, имени, разделе и course_id.

1 Ответ

0 голосов
/ 02 апреля 2020

Вы можете перебирать словари в списке и извлекать нужные ключи для каждого из них по отдельности:

dept = input('what department are you  in right now: ')
dept = dept.upper()
if dept not in department_storage:
    raise ValueError("department doesn't exist")
else:
    department_url = requests.get(f"https://api.umd.io/v0/courses?dept_id={dept}")
    specific_major =department_url.json()
    keep_keys = ["course_id", "name", "credits", "sections"]                        
    courses = [{k: json_dict[k] for k in keep_keys}
               for json_dict in specific_major]
    print(json.dumps(courses, indent=2))

Используя dept="INST", вывод:

[
  {
    "course_id": "INST123",
    "name": "Databases for All",
    "credits": "3",
    "sections": [
      "INST123-0101"
    ]
  },
  {
    "course_id": "INST126",
    "name": "Introduction to Programming for Information Science",
    "credits": "3",
    "sections": [
      "INST126-0101",
      "INST126-0102",
      "INST126-0103",
      "INST126-0104"
    ]
  },
  ...
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...