Wie funktioniert collections.defaultdict?

collections.defaultdict ist eine Unterklasse der integrierten dict-Klasse in Python. Es ermöglicht Ihnen, einen Standardwert für einen nicht vorhandenen Schlüssel anzugeben, sodass, wenn Sie versuchen, auf einen Schlüssel zuzugreifen, der nicht vorhanden ist, stattdessen der Standardwert zurückgegeben wird, anstatt einen KeyError auszulösen.

Hier ist ein Beispiel dafür, wie defaultdict verwendet wird, um die Häufigkeit von Wörtern in einem Satz zu zählen:

from collections import defaultdict

sentence = "The quick brown fox jumps over the lazy dog"
words = sentence.split()

word_counts = defaultdict(int)  # Der Standardwert von nicht vorhandenen Schlüsseln ist 0

for word in words:
    word_counts[word] += 1

print(word_counts)

Das wird das Ergebnis ausgeben:

defaultdict(, {'The': 1, 'quick': 1, 'brown': 1, 'fox': 1, 'jumps': 1, 'over': 1, 'the': 1, 'lazy': 1, 'dog': 1})

Man kann auch eine Funktion als default_factory verwenden, wie hier:

from collections import defaultdict

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)
print(d)

Das wird das Ergebnis ausgeben:

defaultdict(, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]})

In diesem Beispiel ist die default_factory list, also wenn ein Schlüssel nicht gefunden wird, wird eine leere Liste zurückgegeben.