Sono venuto a questo comportamento che mi ha sorpreso:Creazione di dizionari con tasti e oggetti mutabili. Una sorpresa
Python 2.6 e 3,2
>>> xs = dict.fromkeys(range(2), [])
>>> xs
{0: [], 1: []}
>>> xs[0].append(1)
>>> xs
{0: [1], 1: [1]}
Tuttavia, comprensioni dict in 3.2 mostrano un atteggiamento più gentile:
>>> xs = {i:[] for i in range(2)}
>>> xs
{0: [], 1: []}
>>> xs[0].append(1)
>>> xs
{0: [1], 1: []}
>>>
Come viene? Perché fromkeys
si comporta in questo modo?
la differenza è la stessa come in '[[] ] * 2' e '[[] per _ nell'intervallo (2)]'. – jfs
@ J.F.Sebastian Sono abituato al significato di [[]] * 2 e altri trucchi simili. Ma i tasti mi hanno colto di sorpresa. Forse è solo una questione di familiarità ... praticamente non uso mai il metodo fromkeys ... – joaquin