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@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a