Encuentra un valor en JSON usando Python

Anteriormente he tenido éxito en analizar los datos de un archivo JSON, pero ahora tengo un problema con la función que quiero lograr. Tengo una lista de nombres, números de identificación y fecha de nacimiento en un JSON. Lo que quiero obtener en Python es permitirle a un usuario ingresar un nombre y recuperar su número de identificación y la fecha de nacimiento (si está presente).

Este es mi archivo de ejemplo 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" } ] 

Para que quede claro, quiero ingresar “V410Z8” y obtener su nombre y su fecha de nacimiento.

Intenté escribir algún código en Python, pero solo logro buscar “id_number” y no lo que está dentro de “id_number”, por ejemplo, “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 

Gracias por su apoyo, chicos 🙂

Tienes que recorrer la lista de diccionarios y buscar el que tiene el id_number dado. Una vez que lo encuentre, puede imprimir el rest de sus datos y romperlos, asumiendo que id_number es único.

 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 

Si tiene control sobre la estructura de datos, una forma más eficiente sería usar el id_number como clave (nuevamente, asumiendo que id_number es único):

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

Entonces todo lo que necesitas hacer es intentar acceder a él directamente:

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