Normalerweise erzeugt ein Python Dictionary einen „KeyError“ wenn auf einen Key zugegriffen wird der nicht existiert. Mit „defaultdict“ werden die Keys einfach erzeugt wenn sie nicht existieren.
Ohne defaultdict:
>>> d = {} >>> d['foobar'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'foobar'
Mit defaultdict:
>>> from collections import defaultdict >>> d = defaultdict(dict) >>> d['foobar'] {} >>>
Das Verhalten hat natürlich Vorteile wenn man mehrdimensionale Dictionarys bauen will:
Ohne defaultdict:
>>> d = {} >>> d['first'] = {} >>> d['first']['second'] = "foobar" >>> d {'first': {'second': 'foobar'}}
Mit defaultdict:
>>> d = defaultdict(dict) >>> d['first']['second'] = "foobar" >>> d defaultdict(<class 'dict'>, {'first': {'second': 'foobar'}})
Mehr dazu: