Praktische Anwendungen von defaultdict
Zählen von Vorkommen
Einer der häufigsten Anwendungsfälle für defaultdict
ist das Zählen der Vorkommen von Elementen in einer Liste oder einem anderen iterierbaren Objekt. Hier ist ein Beispiel:
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})
In diesem Beispiel verwenden wir ein defaultdict
mit einem Standardwert von int
, um die Vorkommen jeder Frucht in der fruits
-Liste zu zählen.
Gruppieren von Daten
Ein weiterer häufiger Anwendungsfall für defaultdict
ist das Gruppieren von Daten anhand eines bestimmten Schlüssels, wobei die Anzahl der Gruppen im Voraus nicht bekannt ist. Hier ist ein Beispiel:
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']})
In diesem Beispiel verwenden wir ein defaultdict
mit einem Standardwert von list
, um die Schüler nach ihren Noten zu gruppieren. Die Schlüssel im grade_groups
-Wörterbuch sind die eindeutigen Noten, und die Werte sind Listen von Schülernamen für jede Note.
Verschachtelte Wörterbücher
defaultdict
ist auch nützlich, wenn Sie mit verschachtelten Wörterbüchern arbeiten, da es Ihnen helfen kann, KeyError
-Ausnahmen beim Zugriff auf verschachtelte Schlüssel zu vermeiden. Hier ist ein Beispiel:
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'}})
In diesem Beispiel erstellen wir ein verschachteltes defaultdict
, bei dem das äußere Wörterbuch einen Standardwert eines anderen defaultdict
mit einem Standardwert einer leeren Zeichenkette hat. Dies ermöglicht es uns, einfach neue Schlüssel und Werte zum verschachtelten Wörterbuch hinzuzufügen, ohne prüfen zu müssen, ob die Zwischenschlüssel existieren.
graph TD
A[Counting Occurrences] --> B[Grouping Data]
B --> C[Nested Dictionaries]
C --> D[Other Applications]
Dies sind nur einige Beispiele für die praktischen Anwendungen von defaultdict
in Python. Die Vielseitigkeit dieser Datenstruktur macht sie zu einem wertvollen Werkzeug in einer Vielzahl von Programmier-Szenarien.