Praktische Anwendungsfälle
Zählen von Vorkommen
Ein häufiger Anwendungsfall für defaultdict
ist das Zählen der Vorkommen von Elementen in einer Liste oder einem anderen iterierbaren Objekt. Indem Sie ein defaultdict(int)
verwenden, können Sie einfach die Anzahl für jedes Element verfolgen, ohne überprüfen zu müssen, ob der Schlüssel bereits im Wörterbuch existiert.
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}
Gruppieren von Daten
Eine weitere nützliche Anwendung von defaultdict
ist das Gruppieren von Daten nach einem bestimmten Schlüssel, wobei die Werte in Listen gespeichert werden. Dies kann besonders hilfreich sein, wenn Sie Daten basierend auf bestimmten Kriterien organisieren müssen.
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'}]}
Geschachtelte Wörterbücher
defaultdict
kann auch nützlich sein, wenn Sie mit geschachtelten Wörterbüchern arbeiten. Indem Sie ein defaultdict(dict)
verwenden, können Sie automatisch neue geschachtelte Wörterbücher erstellen, wenn Sie auf einen Schlüssel zugreifen, der nicht existiert.
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}}
Durch die Untersuchung dieser praktischen Anwendungsfälle können Sie sehen, wie defaultdict
Ihren Python-Code vereinfachen und Ihnen helfen kann, fehlende Schlüssel effektiver zu behandeln.