Skip to content Skip to sidebar Skip to footer

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'

Solution 1:

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.

Solution 2:

The Proper Solution

There is a much more efficient way to do this than with looping. If you use operators.itemgetter you can do a simple if x in y check

#to simply check if the list of dicts contains the key=>value pair'George' in map(itemgetter('name'), list_of_dicts)

#if you want to get the index index = map(itemgetter('name'), list_of_dicts).index("George") if'George' in map(itemgetter('name'), list_of_dicts) else None

Solution 3:

l = [{'name':'Bernard','age':7},{'name':'George','age':4},{'name':'Reginald','age':6}]
search_for = 'George'printTrueinmap(lambda person: Trueif person['name'].lower() == search_for.lower() elseFalse, l )

Solution 4:

smf = [{'name':'Bernard','age':7},{'name':'George','age':4},{'name':'Reginald','age':6}]
defnames(d):
    for i in d:
        for key, value in i.iteritems():
             if key == 'name':
                 yield value


In [5]: 'Bernard'in names(smf)
Out[5]: True


In [6]: 'Bernardadf'in names(smf)
Out[6]: False

Solution 5:

I think a list comprehension would do the trick here too.

names = [i['name'] for i in l]

Then use it like so:

'Bernard' in names(True)'Farkle' in names(False)

Or a one liner (If it's only one check)

'Bernard' in [i['name'] for i in l] (True)

Post a Comment for "Python Check If Value Is In A List Of Dicts"