Comment itérer sur les clés d'un defaultdict en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Le defaultdict de Python est une structure de données puissante qui simplifie le processus de gestion des clés manquantes. Dans ce tutoriel, nous allons plonger dans l'art d'itérer sur les clés d'un defaultdict, vous fournissant les connaissances nécessaires pour exploiter tout son potentiel dans vos projets Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/AdvancedTopicsGroup -.-> python/iterators("Iterators") python/AdvancedTopicsGroup -.-> python/generators("Generators") python/AdvancedTopicsGroup -.-> python/context_managers("Context Managers") subgraph Lab Skills python/dictionaries -.-> lab-415686{{"Comment itérer sur les clés d'un defaultdict en Python"}} python/iterators -.-> lab-415686{{"Comment itérer sur les clés d'un defaultdict en Python"}} python/generators -.-> lab-415686{{"Comment itérer sur les clés d'un defaultdict en Python"}} python/context_managers -.-> lab-415686{{"Comment itérer sur les clés d'un defaultdict en Python"}} end

Introduction au defaultdict

En Python, le defaultdict est une sous-classe de la classe dict intégrée. Il offre un moyen de créer un objet de type dictionnaire qui a une valeur par défaut pour les clés manquantes. Cela peut être particulièrement utile lorsque vous devez effectuer des opérations sur un dictionnaire sans avoir à vous soucier de gérer les exceptions KeyError lors de l'accès à des clés inexistantes.

Le defaultdict est défini dans le module collections, et il prend un objet appelable (callable) comme argument. Cet objet appelable est utilisé pour fournir la valeur par défaut pour toutes les nouvelles clés qui sont accédées.

Voici un exemple de création d'un defaultdict :

from collections import defaultdict

## Create a defaultdict with a default value of 0
d = defaultdict(int)

## Add some values to the dictionary
d['apple'] = 2
d['banana'] = 3

## Access a non-existent key
print(d['orange'])  ## Output: 0

Dans l'exemple ci-dessus, lorsque nous essayons d'accéder à la clé 'orange', qui n'existe pas dans le dictionnaire, le defaultdict crée automatiquement une nouvelle entrée avec la valeur par défaut de 0.

Le defaultdict peut être utilisé avec différents objets appelables, tels que list, set, ou même des fonctions personnalisées, pour fournir différentes valeurs par défaut pour les clés manquantes.

graph TD A[Create a defaultdict] --> B[Specify a default value] B --> C[Add values to the dictionary] C --> D[Access non-existent keys] D --> E[Default value is automatically provided]

En utilisant un defaultdict, vous pouvez simplifier votre code et éviter de devoir vérifier l'existence des clés avant de les accéder. Cela peut rendre votre code plus concis et plus facile à lire.

Itérer sur les clés d'un defaultdict

Itérer sur les clés d'un defaultdict est similaire à itérer sur les clés d'un dictionnaire classique. Vous pouvez utiliser les mêmes méthodes et techniques pour accéder aux clés.

Voici quelques façons d'itérer sur les clés d'un defaultdict :

Utilisation de la méthode keys()

from collections import defaultdict

## Create a defaultdict with a default value of 0
d = defaultdict(int)
d['apple'] = 2
d['banana'] = 3
d['orange'] = 1

## Iterate over the keys using the keys() method
for key in d.keys():
    print(key)

Sortie :

apple
banana
orange

Utilisation d'une boucle for

from collections import defaultdict

## Create a defaultdict with a default value of 0
d = defaultdict(int)
d['apple'] = 2
d['banana'] = 3
d['orange'] = 1

## Iterate over the keys using a for loop
for key in d:
    print(key)

Sortie :

apple
banana
orange

Utilisation de la méthode items()

from collections import defaultdict

## Create a defaultdict with a default value of 0
d = defaultdict(int)
d['apple'] = 2
d['banana'] = 3
d['orange'] = 1

## Iterate over the keys and values using the items() method
for key, value in d.items():
    print(key)

Sortie :

apple
banana
orange

Comme vous pouvez le voir, itérer sur les clés d'un defaultdict n'est pas différent d'itérer sur les clés d'un dictionnaire classique. Le defaultdict se comporte exactement comme un dictionnaire classique, avec l'avantage supplémentaire de fournir une valeur par défaut pour les clés manquantes.

Cas d'utilisation pratiques du defaultdict

Le defaultdict est une structure de données polyvalente qui peut être utilisée dans diverses situations. Voici quelques cas d'utilisation pratiques du defaultdict :

Comptage des occurrences

Un cas d'utilisation courant du defaultdict est le comptage des occurrences d'éléments dans une liste ou une séquence. En utilisant un defaultdict avec une valeur par défaut de 0, vous pouvez facilement suivre le nombre d'occurrences de chaque élément.

from collections import defaultdict

## Count the occurrences of words in a sentence
sentence = "the quick brown fox jumps over the lazy dog"
word_count = defaultdict(int)
for word in sentence.split():
    word_count[word] += 1

print(dict(word_count))

Sortie :

{'the': 2, 'quick': 1, 'brown': 1, 'fox': 1, 'jumps': 1, 'over': 1, 'lazy': 1, 'dog': 1}

Groupement de données

Un autre cas d'utilisation courant du defaultdict est le groupement de données en fonction d'une clé. En utilisant un defaultdict avec une valeur par défaut d'une liste ou d'un ensemble vide, vous pouvez facilement ajouter des valeurs à la liste ou à l'ensemble correspondant.

from collections import defaultdict

## Group students by their grades
students = [
    {"name": "Alice", "grade": "A"},
    {"name": "Bob", "grade": "B"},
    {"name": "Charlie", "grade": "A"},
    {"name": "David", "grade": "C"},
    {"name": "Eve", "grade": "B"}
]

grade_groups = defaultdict(list)
for student in students:
    grade_groups[student["grade"]].append(student["name"])

print(dict(grade_groups))

Sortie :

{'A': ['Alice', 'Charlie'], 'B': ['Bob', 'Eve'], 'C': ['David']}

Construction d'arbres et de structures imbriquées

Le defaultdict peut également être utilisé pour construire des structures de données en arbre ou des dictionnaires imbriqués. En utilisant un defaultdict avec une valeur par défaut d'un autre defaultdict, vous pouvez créer une structure de données hiérarchique qui peut être facilement parcourue et manipulée.

from collections import defaultdict

## Build a nested dictionary
data = defaultdict(lambda: defaultdict(int))
data["fruits"]["apples"] = 5
data["fruits"]["bananas"] = 3
data["vegetables"]["carrots"] = 10
data["vegetables"]["broccoli"] = 7

print(dict(data))

Sortie :

{'fruits': {'apples': 5, 'bananas': 3}, 'vegetables': {'carrots': 10, 'broccoli': 7}}

Ce ne sont que quelques exemples des cas d'utilisation pratiques du defaultdict en Python. En exploitant sa capacité à fournir des valeurs par défaut pour les clés manquantes, vous pouvez écrire un code plus concis et robuste qui gère les cas limites plus gracieusement.

Résumé

À la fin de ce tutoriel, vous aurez une bonne compréhension de la manière d'itérer efficacement sur les clés d'un defaultdict en Python. Vous découvrirez également des cas d'utilisation pratiques de cette structure de données polyvalente, vous permettant d'optimiser votre code et d'améliorer vos compétences en résolution de problèmes. Profitez de la puissance du defaultdict et propulsez votre programmation Python à de nouveaux sommets.