[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