Applications pratiques du defaultdict
Comptage d'occurrences
L'un des cas d'utilisation les plus courants du defaultdict
est le comptage des occurrences d'éléments dans une liste ou tout autre itérable. Voici un exemple :
from collections import defaultdict
## Count the occurrences of elements in a list
fruits = ['apple', 'banana', 'cherry', 'apple', 'banana', 'cherry', 'cherry']
fruit_count = defaultdict(int)
for fruit in fruits:
fruit_count[fruit] += 1
print(fruit_count)
## Output: defaultdict(<class 'int'>, {'apple': 2, 'banana': 2, 'cherry': 3})
Dans cet exemple, nous utilisons un defaultdict
avec une valeur par défaut de int
pour compter les occurrences de chaque fruit dans la liste fruits
.
Regroupement de données
Un autre cas d'utilisation courant du defaultdict
est le regroupement de données en fonction d'une certaine clé, lorsque le nombre de groupes n'est pas connu à l'avance. Voici un exemple :
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(grade_groups)
## Output: defaultdict(<class 'list'>, {'A': ['Alice', 'Charlie'], 'B': ['Bob', 'Eve'], 'C': ['David']})
Dans cet exemple, nous utilisons un defaultdict
avec une valeur par défaut de list
pour regrouper les étudiants par leurs notes. Les clés dans le dictionnaire grade_groups
sont les notes uniques, et les valeurs sont des listes de noms d'étudiants pour chaque note.
Dictionnaires imbriqués
Le defaultdict
est également utile lorsqu'on travaille avec des dictionnaires imbriqués, car il peut vous aider à éviter les exceptions KeyError
lors de l'accès aux clés imbriquées. Voici un exemple :
from collections import defaultdict
## Create a nested dictionary using defaultdict
person_data = defaultdict(lambda: defaultdict(str))
person_data['Alice']['age'] = 25
person_data['Alice']['city'] = 'New York'
person_data['Bob']['age'] = 30
person_data['Bob']['city'] = 'Los Angeles'
print(person_data)
## Output: defaultdict(<function <lambda> at 0x7f6a8c0c8820>, {'Alice': {'age': 25, 'city': 'New York'}, 'Bob': {'age': 30, 'city': 'Los Angeles'}})
Dans cet exemple, nous créons un defaultdict
imbriqué où le dictionnaire externe a une valeur par défaut d'un autre defaultdict
avec une valeur par défaut d'une chaîne de caractères vide. Cela nous permet d'ajouter facilement de nouvelles clés et valeurs au dictionnaire imbriqué sans avoir à vérifier si les clés intermédiaires existent.
graph TD
A[Counting Occurrences] --> B[Grouping Data]
B --> C[Nested Dictionaries]
C --> D[Other Applications]
Ce ne sont que quelques exemples des applications pratiques du defaultdict
en Python. La polyvalence de cette structure de données en fait un outil précieux dans une grande variété de scénarios de programmation.