test = defaultdict(defaultdict(list))
Perché defaultdict
richiede che si dà qualcosa che può essere chiamato per creare le chiavi per i valori mancanti. list
è un tale chiamabile, ma non lo è defaultdict(list)
. È un'istanza defaultdict
e non è possibile chiamare uno defaultdict
.
Il lambda
è una funzione che, quando chiamato, restituisce un valore che può essere utilizzato nel dizionario, quindi funziona.
In sostanza, defaultdict(list)
sta per essere valutata prima di tua defaultdict
viene istanziato, e si desidera rinviare che fino ad incontrare una chiave mancante. Questo è il motivo per cui qui viene utilizzato un oggetto chiamabile (un tipo o una funzione).
L'analogo per 'list' è, ovviamente,' lambda: list() '. –