By “shallow copying” it means the content of the dictionary is not copied by value, but just creating a new reference.
>>> a = {1: [1,2,3]} >>> b = a.copy() >>> a, b ({1: [1, 2, 3]}, {1: [1, 2, 3]}) >>> a[1].append(4) >>> a, b ({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
In contrast, a deep copy will copy all contents by value.
>>> import copy >>> c = copy.deepcopy(a) >>> a, c ({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]}) >>> a[1].append(5) >>> a, c ({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
So:
b = a
: Reference assignment, Makea
andb
points to the same object.
b = a.copy()
: Shallow copying,a
andb
will become two isolated objects, but their contents still share the same reference
b = copy.deepcopy(a)
: Deep copying,a
andb
‘s structure and content become completely isolated.
Source: python – Understanding dict.copy() – shallow or deep? – Stack Overflow
python – Understanding dict.copy() – shallow or deep? – Stack Overflow