Maison > développement back-end > Tutoriel Python > Comment rechercher et récupérer efficacement un dictionnaire à partir d'une liste en Python sur la base de la correspondance clé-valeur ?

Comment rechercher et récupérer efficacement un dictionnaire à partir d'une liste en Python sur la base de la correspondance clé-valeur ?

Barbara Streisand
Libérer: 2024-12-10 06:43:37
original
1059 Les gens l'ont consulté

How to Efficiently Find and Retrieve a Dictionary from a List in Python Based on Key-Value Matching?

Rechercher et récupérer un dictionnaire à partir d'une liste basée sur des critères spécifiques

En Python, manipuler des listes de dictionnaires est une tâche courante. Un de ces scénarios consiste à rechercher et à récupérer un dictionnaire spécifique en fonction de sa paire clé-valeur.

Problème :

Considérez la liste de dictionnaires suivante :

[
  { "name": "Tom", "age": 10 },
  { "name": "Mark", "age": 5 },
  { "name": "Pam", "age": 7 }
]
Copier après la connexion

Comment rechercher et récupérer le dictionnaire avec la clé "nom" définie sur "Pam" ?

Solution :

Pour résoudre ce problème, nous pouvons utiliser une expression génératrice, comme démontré ci-dessous :

dicts = [
    { "name": "Tom", "age": 10 },
    { "name": "Mark", "age": 5 },
    { "name": "Pam", "age": 7 },
    { "name": "Dick", "age": 12 }
]

result = next(item for item in dicts if item["name"] == "Pam")
Copier après la connexion

Le L'expression du générateur parcourt chaque dictionnaire de la liste et vérifie si sa clé « nom » correspond à « Pam ». Si une correspondance est trouvée, le dictionnaire correspondant est renvoyé et stocké dans la variable de résultat. La fonction next() garantit que le premier élément correspondant est renvoyé.

Par exemple, l'exécution de l'extrait de code ci-dessus récupérera le dictionnaire :

{'age': 7, 'name': 'Pam'}
Copier après la connexion

Gestion de l'élément introuvable :

Si l'élément n'est pas trouvé, vous pouvez le gérer en fournissant une valeur par défaut en utilisant un paramètre légèrement différent API :

result = next((item for item in dicts if item["name"] == "Pam"), None)
Copier après la connexion

L'argument Aucun garantit que la fonction renvoie Aucun si aucun élément correspondant n'est trouvé.

Recherche de l'index de l'élément :

Pour trouver l'index de l'élément correspondant au lieu de l'élément lui-même, vous pouvez utiliser la fonction enumerate() :

index = next((i for i, item in enumerate(dicts) if item["name"] == "Pam"), None)
Copier après la connexion

Le La fonction enumerate() renvoie un itérateur de tuples, où chaque tuple contient l'index et l'élément. L'expression génératrice utilise cet itérateur pour trouver l'index du premier élément correspondant et le stocke dans la variable index.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal