2015-06-03 12 views

risposta

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

+2

L'analogo per 'list' è, ovviamente,' lambda: list() '. –

Problemi correlati