[Python] Confronto dizionari.

Ernesto Arbitrio ernesto.arbitrio a gmail.com
Mar 2 Feb 2021 11:38:53 CET


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 <iz4apu a 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 a lists.python.it
> https://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML รจ stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20210202/91c27628/attachment.html>


Maggiori informazioni sulla lista Python