[Python] Dizionario modificato.

Francesco Pischedda francesco.pischedda a gmail.com
Ven 5 Set 2014 10:23:46 CEST


Nel primo caso viene creata una lista i cui elementi sono riferimenti allo
(e non copie dello) stesso oggetto, mentre nel secondo caso memorizzi tre
riferimenti a tre oggetti dict distinti che vivono di vita propria.


Il giorno 05 settembre 2014 10:18, Walter Valenti <waltervalenti a yahoo.it>
ha scritto:

> Prendiamo questo semplice codice:
>
>
> def list():
>     elem = dict()
>     lista = []
>     for x in range(3):
>         elem['nome'] = x
>         lista.append(elem)
>     print lista
> list()
>
> Mi aspetterei come output:
> [{'nome': 0}, {'nome': 1}, {'nome': 2}]
> Quello che ottengo è invece:
> [{'nome': 2}, {'nome': 2}, {'nome': 2}]
>
> Se invece il ciclo lo scrivo così ("elem" lo dichiaro dentro il ciclo):
> def list():
>     lista = []
>     for x in range(3):
>         elem = dict()
>
>         elem['nome'] = x
>         lista.append(elem)
>     print lista
> list()
>
> ottengo l'output come previsto.
>
> Cosa succede nel primo caso?
> Viene modificato il dizionario messo nella lista?
> Perché?
>
> Grazie
>
> Walter
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 
"Shipping is a feature. A really important feature. Your product must have
it."

"Rendete ogni cosa il più semplice possibile, ma non di più" (Albert
Einstein)

"You are what you choose today, not what you've chosen before"

"Unix IS user friendly. It's just selective about who its friend are"
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140905/8d63ac73/attachment.html>


Maggiori informazioni sulla lista Python