Collections.defaultdict vs. Regular Dict: Die Unterscheidung verstehen
Im Gegensatz zu herkömmlichen Python-Wörterbüchern, die einen KeyError für fehlende Schlüssel auslösen, bietet das defaultdict eine einzigartige Wendung. Es initialisiert nicht vorhandene Schlüssel automatisch mit Standardwerten, die von einem benutzerdefinierten „aufrufbaren“ Objekt bestimmt werden. Um seine Funktionalität vollständig zu verstehen, wollen wir uns mit seiner Syntax und Mechanik befassen.
Im ersten Beispiel in der Frage:
>>> from collections import defaultdict >>> s = 'mississippi' >>> d = defaultdict(int) >>> for k in s: ... d[k] += 1 ... >>> d.items() dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])
Wir verwenden ein defaultdict und geben int als aufrufbares Objekt an. Während wir die Zeichenfolge s durchlaufen, erstellt das Standarddikt automatisch fehlende Schlüssel, indem es int() aufruft. Diese Funktion gibt ein ganzzahliges Objekt zurück, das auf 0 initialisiert ist. Folglich wird jeder Buchstabe in s zu einem Schlüssel im resultierenden Wörterbuch d, wobei die entsprechenden Werte die Häufigkeiten seines Auftretens darstellen.
Im zweiten Beispiel:
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] >>> d = defaultdict(list) >>> for k, v in s: ... d[k].append(v) ... >>> d.items() [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
Wir verwenden wieder ein Defaultdict und übergeben list als aufrufbares Objekt. Dieses Mal werden nicht vorhandene Schlüssel mit list() initialisiert. Während wir die Liste der Tupel durchlaufen, stellt das Standarddikt sicher, dass jede eindeutige Farbe als Schlüssel dargestellt wird. Die entsprechenden Werte sind Listen, die die Häufigkeit des Auftretens jeder Farbe speichern.
Durch die Verwendung eines Standarddikts können wir Wörterbücher mit fehlenden Schlüsseln bequem bearbeiten, mögliche KeyError-Ausnahmen vermeiden und unseren Code vereinfachen.
Das obige ist der detaillierte Inhalt von„defaultdict' vs. reguläres „dict' in Python: Wann sollten Sie welches verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!