Searching Dictionaries within a List in Python
Problem:
Given a list of dictionaries, how can we efficiently search and retrieve a specific dictionary based on a key-value pair? In this case, we want to find the dictionary with the key "name" set to "Pam."
[ { "name": "Tom", "age": 10 }, { "name": "Mark", "age": 5 }, { "name": "Pam", "age": 7 }, ]
Solution:
To perform the search operation, we can leverage Python's built-in generator expressions.
dicts = [ { "name": "Tom", "age": 10 }, { "name": "Mark", "age": 5 }, { "name": "Pam", "age": 7 }, ] result = next(item for item in dicts if item["name"] == "Pam") print(result)
This code iterates through each dictionary in the list using a generator expression and filters based on the condition "item["name"] == "Pam"". If a matching dictionary is found, the next() function returns the first matching item.
{'name': 'Pam', 'age': 7}
Alternatively, if you need to handle the case where the matching item is not found, you can use the following approach:
next((item for item in dicts if item["name"] == "Pam"), None)
This code returns None if no matching item is found.
To find the index of the matching item rather than the item itself, you can enumerate the list:
next((i for i, item in enumerate(dicts) if item["name"] == "Pam"), None)
The above is the detailed content of How to Efficiently Search for a Dictionary in a List Based on a Key-Value Pair in Python?. For more information, please follow other related articles on the PHP Chinese website!