[Python] Dizionario modificato.

Walter Valenti waltervalenti a yahoo.it
Ven 5 Set 2014 10:18:58 CEST


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



Maggiori informazioni sulla lista Python