Buongiorno a tutti.
Ho questo problema da risolvere.

>>> d={}
>>> l=['io',15]
>>> d[1]=l
>>> d
{1: ['io', 15]}
>>> c=d
>>> d[1][1]=20
>>> c
{1: ['io', 20]}

E fin qui, capisco il comportamento di Python.

In un mio programma ho una funzione che agisce su di un dato dizionario:

d = My_Funct(d)

Questa funzione potrebbe modificare o meno, il dizionario ricevuto. Se lo ha modificato, ho bisogno di saperlo per flaggare a True una variabile e salvarlo alla fine del programma.
 Quindi o fatto:

c=d.copy()
d = My_Funct(d)
if c != d: tosave=True

Solo che non funziona:
>>> c=d.copy()
>>> c
{1: ['io', 20]}
>>> d[1][1]=21
>>> c
{1: ['io', 21]}

Che cosa mi sfugge? d.copy non dovrebbe creare un dizionario nuovo, svincolato dai riferimenti alle variabili, l, contenuti nell'origine, d?

Grazie.

--
Gabriele Battaglia, IZ4APU (Libero)
Sent from TB on Windows 10, Genus Bononiae's computer.
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a