[Python] Confronto dizionari.

Gabriele Battaglia iz4apu a libero.it
Mar 2 Feb 2021 11:28:49 CET


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.


Maggiori informazioni sulla lista Python