Rechercher une liste de dictionnaires en Python

Muhammad Maisam Abbas 30 janvier 2023
  1. Utilisez la fonction next() pour rechercher une liste de dictionnaires en Python
  2. Rechercher une liste de dictionnaires avec la fonction filter() en Python
  3. Utiliser la compréhension de liste pour rechercher une liste de dictionnaires en Python
Rechercher une liste de dictionnaires en Python

Ce didacticiel présentera les méthodes que vous pouvez utiliser pour rechercher une liste de dictionnaires en Python.

Utilisez la fonction next() pour rechercher une liste de dictionnaires en Python

La fonction next() peut être utilisée pour fournir le résultat en tant qu’élément suivant dans l’itérateur donné. Cette méthode nécessite également l’utilisation de la boucle for pour tester le processus dans toutes les conditions.

Le code suivant utilise la fonction next() pour rechercher une liste de dictionnaires en Python.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]
print(next(x for x in lstdict if x["name"] == "Klaus"))
print(next(x for x in lstdict if x["name"] == "David"))

Production:

{'name': 'Klaus', 'age': 32}
Traceback (most recent call last):
  File "<string>", line 8, in <module>
StopIteration

Cette méthode est implémentée avec succès lorsque l’on recherche un nom qui existe déjà dans la liste des dictionnaires. Néanmoins, il renvoie une erreur StopIteration lorsqu’un nom qui n’existe pas dans la liste des dictionnaires est recherché.

Cependant, ce problème peut être facilement traité dans le code ci-dessus. Vous ajustez simplement et fournissez une valeur par défaut avec l’utilisation d’une API légèrement différente.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]
print(next((x for x in lstdict if x["name"] == "David"), None))

Production:

None

Plutôt que de trouver l’élément lui-même, nous pouvons également trouver l’index de l’élément dans une liste de dictionnaires. Pour implémenter cela, nous pouvons utiliser la fonction enumerate().

Le code suivant utilise la fonction next() et la fonction enumerate() pour rechercher et trouver l’index de l’élément.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]
print(next((i for i, x in enumerate(lstdict) if x["name"] == "Kol"), None))

Production:

2

Rechercher une liste de dictionnaires avec la fonction filter() en Python

La fonction filter(function, sequence) permet de comparer la sequence avec la function en Python. Il vérifie que chaque élément de la séquence est vrai ou non selon la fonction. Nous pouvons facilement rechercher un élément dans une liste de dictionnaires en utilisant la fonction filter() avec une fonction lambda. En Python3, la fonction filter() renvoie un objet de la classe filter(). Nous pouvons convertir cet objet en liste avec la fonction list().

L’exemple de code suivant nous montre comment rechercher dans une liste de dictionnaires un élément spécifique avec les fonctions filter() et lambda.

listOfDicts = [
    {"name": "Tommy", "age": 20},
    {"name": "Markus", "age": 25},
    {"name": "Pamela", "age": 27},
    {"name": "Richard", "age": 22},
]
list(filter(lambda item: item["name"] == "Richard", listOfDicts))

Production:

[{'age': 22, 'name': 'Richard'}]

Nous avons recherché dans la liste des dictionnaires l’élément où la clé name est égale à Richard en utilisant la fonction filter() avec une fonction lambda. Tout d’abord, nous avons initialisé notre liste de dictionnaires, listOfDicts, et utilisé la fonction filter() pour rechercher les valeurs qui correspondent à la fonction lambda lambda item: item['name'] == 'Richard' dans il. Enfin, nous avons utilisé la fonction list() pour convertir les résultats en liste.

Utiliser la compréhension de liste pour rechercher une liste de dictionnaires en Python

La compréhension de liste est un moyen relativement plus court et très gracieux de créer des listes qui doivent être formées sur la base des valeurs données d’une liste déjà existante.

Nous pouvons utiliser la compréhension de liste pour renvoyer une liste qui produit les résultats de la recherche de la liste des dictionnaires en Python.

Le code suivant utilise la compréhension de liste pour rechercher une liste de dictionnaires en Python.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]

print([x for x in lstdict if x["name"] == "Klaus"][0])

Production:

{'name': 'Klaus', 'age': 32}
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Python Dictionary

Article connexe - Python List