[Python] Dizionario modificato.

Marco Santamaria marco.santamaria a gmail.com
Ven 5 Set 2014 14:51:05 CEST


> Cosa succede nel primo caso?
> Viene modificato il dizionario messo nella lista?
> Perché?
>

Nel primo caso ogni iterazione del ciclo for modifica lo stesso oggetto
elem, definito fuori dal ciclo e aggiunto più volte alla lista. Quando
viene inserito l'oggetto nella lista non viene ridefinito, come nel secondo
esempio.

Questo codice, ulteriormente semplificato eliminando il for, forse si
capisce meglio:

elem = dict()
> lista = []
>
> elem['nome'] = 0
> lista.append(elem)
>
> elem['nome'] = 1
> lista.append(elem)
>
> print lista
>

L'output è:

[{'nome': 1}, {'nome': 1}]


Se invece scrivo:

lista = []
>
> elem = dict()
> elem['nome'] = 0
> lista.append(elem)
>
> elem = dict()
> elem['nome'] = 1
> lista.append(elem)
>
> print lista
>

elem viene ridefinito prima del secondo inserimento e infatti l'output è:

[{'nome': 0}, {'nome': 1}]
>

Marco
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140905/f762ce6d/attachment.html>


Maggiori informazioni sulla lista Python