Найти значение в JSON с помощью Python

Ранее мне удавалось анализировать данные из файла JSON, но теперь Im сталкивается с проблемой с функцией, которую я хочу достичь. У меня есть список имен, идентификационных номеров и даты рождения в JSON. То, что я хочу получить на Python, - это позволить пользователю ввести имя и получить его идентификационный номер и дату рождения (если есть).

Это мой пример файла JSON:

[
 {
   "id_number": "SA4784",
   "name": "Mark",
   "birthdate": null
 },
 {
   "id_number": "V410Z8",
   "name": "Vincent",
   "birthdate": "15/02/1989"
 },
 {
   "id_number": "CZ1094",
   "name": "Paul",
   "birthdate": "27/09/1994"
 }
]

Чтобы быть ясным, я хочу ввести "V410Z8" и получить его имя и дату его рождения.

Я попытался написать код в Python, но мне удалось найти только "id_number", а не то, что находится внутри "id_number", например "V410Z8".

#!/usr/bin/python
# -*- coding: utf-8 -*-

import json 

database = "example.json"
data = json.loads(open(database).read())

id_number = data[0]["id_number"]
print id_number

Спасибо за поддержку, ребята:)

Ответ 1

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

data = [
 {
   "id_number": "SA4784",
   "name": "Mark",
   "birthdate": None
 },
 {
   "id_number": "V410Z8",
   "name": "Vincent",
   "birthdate": "15/02/1989"
 },
 {
   "id_number": "CZ1094",
   "name": "Paul",
   "birthdate": "27/09/1994"
 }
]

for i in data:
    if i['id_number'] == 'V410Z8':
        print(i['birthdate'])
        print(i['name'])
        break

Если у вас есть контроль над структурой данных, более эффективным способом было бы использовать id_number в качестве ключа (опять же, если предположить, что id_number уникален):

data =  { "SA4784" : {"name": "Mark", "birthdate": None},
          "V410Z8" : { "name": "Vincent", "birthdate": "15/02/1989"},
          "CZ1094" : {"name": "Paul", "birthdate": "27/09/1994"}
        }

Затем все, что вам нужно сделать, это попытаться получить к нему доступ напрямую:

try:
    print(data["V410Z8"]["name"])
except KeyError:
    print("ID doesn't exist")
>> "Vincent"