Cas d'utilisation pratiques
Comptage des occurrences
Un cas d'utilisation courant de defaultdict
est le comptage des occurrences d'éléments dans une liste ou tout autre itérable. En utilisant un defaultdict(int)
, vous pouvez facilement suivre le nombre d'occurrences de chaque élément sans avoir à vérifier si la clé existe déjà dans le dictionnaire.
from collections import defaultdict
words = ['apple', 'banana', 'cherry', 'apple', 'banana', 'date']
word_count = defaultdict(int)
for word in words:
word_count[word] += 1
print(dict(word_count))
## Output: {'apple': 2, 'banana': 2, 'cherry': 1, 'date': 1}
Regroupement de données
Une autre application utile de defaultdict
est le regroupement de données par une certaine clé, où les valeurs sont stockées dans des listes. Cela peut être particulièrement utile lorsque vous avez besoin d'organiser des données en fonction de certains critères.
from collections import defaultdict
data = [
{'name': 'Alice', 'age': 25, 'city': 'New York'},
{'name': 'Bob', 'age': 30, 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': 35, 'city': 'New York'},
{'name': 'David', 'age': 40, 'city': 'Los Angeles'},
]
grouped_data = defaultdict(list)
for item in data:
grouped_data[item['city']].append(item)
print(dict(grouped_data))
## Output: {'New York': [{'name': 'Alice', 'age': 25, 'city': 'New York'}, {'name': 'Charlie', 'age': 35, 'city': 'New York'}],
## 'Los Angeles': [{'name': 'Bob', 'age': 30, 'city': 'Los Angeles'}, {'name': 'David', 'age': 40, 'city': 'Los Angeles'}]}
Dictionnaires imbriqués
defaultdict
peut également être utile lorsque vous travaillez avec des dictionnaires imbriqués. En utilisant un defaultdict(dict)
, vous pouvez créer automatiquement de nouveaux dictionnaires imbriqués lorsque vous accédez à une clé qui n'existe pas.
from collections import defaultdict
data = {
'fruit': {
'apple': 2,
'banana': 3,
},
'vegetable': {
'carrot': 5,
'broccoli': 4,
},
}
nested_dd = defaultdict(dict)
for category, items in data.items():
for item, count in items.items():
nested_dd[category][item] = count
print(dict(nested_dd))
## Output: {'fruit': {'apple': 2, 'banana': 3}, 'vegetable': {'carrot': 5, 'broccoli': 4}}
En explorant ces cas d'utilisation pratiques, vous pouvez voir comment defaultdict
peut simplifier votre code Python et vous aider à gérer plus efficacement les clés manquantes.