<div dir="ltr">Ciao Gabriele, non ho capito molto bene il tuo problema, ma copy fa una copia shallow ovvero "only one level deep", se vuoi una copia completa considerando tutti i livelli di nesting devi usare deepcopy.<br><br>Se mi spieghi meglio cosa deve fare il tuo programma, provo a risponderti in modo piu preciso.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 2, 2021 at 11:29 AM Gabriele Battaglia <<a href="mailto:iz4apu@libero.it">iz4apu@libero.it</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Buongiorno a tutti.<br>
Ho questo problema da risolvere.<br>
<br>
 >>> d={}<br>
 >>> l=['io',15]<br>
 >>> d[1]=l<br>
 >>> d<br>
{1: ['io', 15]}<br>
 >>> c=d<br>
 >>> d[1][1]=20<br>
 >>> c<br>
{1: ['io', 20]}<br>
<br>
E fin qui, capisco il comportamento di Python.<br>
<br>
In un mio programma ho una funzione che agisce su di un dato dizionario:<br>
<br>
d = My_Funct(d)<br>
<br>
Questa funzione potrebbe modificare o meno, il dizionario ricevuto. Se <br>
lo ha modificato, ho bisogno di saperlo per flaggare a True una <br>
variabile e salvarlo alla fine del programma.<br>
  Quindi o fatto:<br>
<br>
c=d.copy()<br>
d = My_Funct(d)<br>
if c != d: tosave=True<br>
<br>
Solo che non funziona:<br>
 >>> c=d.copy()<br>
 >>> c<br>
{1: ['io', 20]}<br>
 >>> d[1][1]=21<br>
 >>> c<br>
{1: ['io', 21]}<br>
<br>
Che cosa mi sfugge? d.copy non dovrebbe creare un dizionario nuovo, <br>
svincolato dai riferimenti alle variabili, l, contenuti nell'origine, d?<br>
<br>
Grazie.<br>
<br>
-- <br>
Gabriele Battaglia, IZ4APU (Libero)<br>
Sent from TB on Windows 10, Genus Bononiae's computer.<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="https://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div>