Find a value in JSON using Python

You can use list comprehension:

Given

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

to get the list item(s) with id_number equal to "V410Z8" you may use:

result = [x for x in data if x["id_number"]=="V410Z8"]

result will contain:

[{'id_number': 'V410Z8', 'name': 'Vincent', 'birthdate': '15/02/1989'}]

In case the if condition is not satisfied, result will contain an empty list: []


Using lamda in Python

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

Using Lambda and filter

print(list(filter(lambda x:x["id_number"]=="CZ1094",data)))

Output

[{'id_number': 'CZ1094', 'name': 'Paul', 'birthdate': '27/09/1994'}]

You have to iterate over the list of dictionaries and search for the one with the given id_number. Once you find it you can print the rest of its data and break, assuming id_number is unique.

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

If you have control over the data structure, a more efficient way would be to use the id_number as a key (again, assuming id_number is unique):

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

Then all you need to do is try to access it directly:

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

data = [
 {
   "id_number": "SA4784",
   "name": "Mark",
   "birthdate": None
 },
 {
   "id_number": "V410Z8",
   "name": "Vincent",
   "birthdate": "14/02/1989"
 },
 {
   "id_number": "CZ1093",
   "name": "Paul",
   "birthdate": "26/09/1994"
 }
]

list(map(lambda x:x if x["id_number"]=="cz1093" ,data)

Output should be

[{
   "id_number": "CZ1094",
   "name": "Paul",
   "birthdate": "26/09/1994"
 }]