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.
Se mi spieghi meglio cosa deve fare il tuo programma, provo a risponderti in modo piu preciso. On Tue, Feb 2, 2021 at 11:29 AM Gabriele Battaglia <iz4...@libero.it> wrote: > 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 >
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python