Maison >développement back-end >Tutoriel Python >Comment rechercher efficacement un dictionnaire dans une liste basée sur une paire clé-valeur en Python ?

Comment rechercher efficacement un dictionnaire dans une liste basée sur une paire clé-valeur en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 06:07:11801parcourir

How to Efficiently Search for a Dictionary in a List Based on a Key-Value Pair in Python?

Recherche de dictionnaires dans une liste en Python

Problème :

Étant donné une liste de dictionnaires , comment pouvons-nous rechercher et récupérer efficacement un dictionnaire spécifique basé sur une paire clé-valeur ? Dans ce cas, nous voulons trouver le dictionnaire avec la clé "name" définie sur "Pam".

[
  { "name": "Tom", "age": 10 },
  { "name": "Mark", "age": 5 },
  { "name": "Pam", "age": 7 },
]

Solution :

Pour effectuer l'opération de recherche , nous pouvons exploiter les expressions génératrices intégrées de Python.

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)

Ce code parcourt chaque dictionnaire de la liste à l'aide d'une expression génératrice et de filtres basés sur le condition "item["name"] == "Pam"". Si un dictionnaire correspondant est trouvé, la fonction next() renvoie le premier élément correspondant.

{'name': 'Pam', 'age': 7}

Alternativement, si vous devez gérer le cas où l'élément correspondant n'est pas trouvé, vous pouvez utiliser l'approche suivante :

next((item for item in dicts if item["name"] == "Pam"), None)

Ce code renvoie Aucun si aucun élément correspondant n'est trouvé.

Pour trouver l'index de l'élément correspondant plutôt que l'élément lui-même, vous pouvez énumérer la liste :

next((i for i, item in enumerate(dicts) if item["name"] == "Pam"), None)

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:
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