2015-06-03 11 views

Antwort

7
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.

+2

Das Analog für 'list' ist natürlich' lambda: list() '. –