You can use the list comprehension or filter function to filter the list of dictionaries in Python. You could also use a for
loop to filter a list of dictionaries.
Python filter list of dictionaries example
Simple example code Filter list of dictionaries using list comprehension
dictlist = [{'first': 'James', 'last': 'Joule'},
{'first': 'James', 'last': 'Watt'},
{'first': 'Christian', 'last': 'Doppler'}]
res = [x for x in dictlist if x['first'] == 'Christian']
print(res)
sres = [x['last'] for x in dictlist if x['first'] == 'Christian']
print(sres)
Output:
Filter list of dictionaries based on key value
Using list comprehension
exampleSet = [{'type': 'type1'}, {'type': 'type2'}, {'type': 'type4'}, {'type': 'type3'}]
keyValList = ['type2', 'type3']
res = [d for d in exampleSet if d['type'] in keyValList]
print(res)
Another way is by using filter
list(filter(lambda d: d['type'] in keyValList, exampleSet))
Output: [{‘type’: ‘type2’}, {‘type’: ‘type3’}]
Lambda filters a list of dictionaries Python
ages = [{'employedId': 1, 'age': 22},
{'employedId': 2, 'age': 32},
{'employedId': 3, 'age': 17},
{'employedId': 4, 'age': 53},
{'employedId': 5, 'age': 32},
{'employedId': 6, 'age': 22}
]
list_filtred = list(filter(lambda tag: tag['age'] == 22, ages))
print(list_filtred)
Output: [{’employedId’: 1, ‘age’: 22}, {’employedId’: 6, ‘age’: 22}]
Do comment if you have any doubts or suggestions on this Python filter topic.
Note: IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.