test = defaultdict(defaultdict(list))
Da defaultdict
erfordert, dass man es etwas geben, das genannt werden können Schlüssel für fehlende Werte zu erstellen. list
ist so aufrufbar, aber defaultdict(list)
ist nicht. Es ist eine defaultdict
Instanz, und Sie können eine defaultdict
nicht nennen.
Die lambda
ist eine Funktion, die beim Aufruf einen Wert zurückgibt, der im Wörterbuch verwendet werden kann, damit es funktioniert. Im Wesentlichen
wird defaultdict(list)
gehen zu bewertende vor Ihre defaultdict
instanziert wird, und Sie wollen defer dass bis zu einem fehlenden Schlüssel angetroffen wird. Aus diesem Grund wird hier ein Callable Object (ein Typ oder eine Funktion) verwendet.
Das Analog für 'list' ist natürlich' lambda: list() '. –