chrism chrism -4 years ago 141
Python Question

Python check if value is in a list of dicts

I have a list of dicts e.g.

[{'name':'Bernard','age':7},{'name':'George','age':4},{'name':'Reginald','age':6}]


I'd like to check to see if a string value is the same as the 'name' value in any of the dicts in the list. For example 'Harold' would be False, but 'George' would be True.

I realise I could do this by looping through each item in the list, but I was wondering if there was a more efficient way?

Answer Source

No, there cannot be a more efficient way if you have just this list of dicts.

However, if you want to check frequently, you can extract a dictionary with name:age items:

l = [{'name':'Bernard','age':7},{'name':'George','age':4},{'name':'Reginald','age':6}]
d = dict((i['name'], i['age']) for i in l)

now you have d:

{'Bernard': 7, 'George': 4, 'Reginald': 6}

and now you can check:

'Harold' in d   -> False
'George' in d   -> True

It will be much faster than iterating over the original list.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download