Find a value in JSON using Python

Find a value in JSON using Python

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 doesnt exist)
>> Vincent

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

Find a value in JSON using Python

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

Leave a Reply

Your email address will not be published. Required fields are marked *