Операторы присваивания в Python не копируют объекты, они создают привязки между целью и объектом.
Таким образом, dict2 = dict1
это приводит к другому связыванию между dict2
и объектом, на который dict1
ссылаются.
если вы хотите скопировать диктовку, вы можете использовать copy module
. Модуль копирования имеет два интерфейса:
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
Разница между мелким и глубоким копированием относится только к составным объектам (объектам, которые содержат другие объекты, такие как списки или экземпляры классов):
Неполная копия создает новый объект соединения , а затем (по мере возможности) вставляет ссылки в него на объекты найдены в оригинале.
Глубокая копия создает новый объект соединения , а затем, рекурсивно, вставляет копии в него предметов , найденных в оригинале.
Например, в Python 2.7.9:
>>> import copy
>>> a = [1,2,3,4,['a', 'b']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(5)
>>> a[4].append('c')
и результат:
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> b
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c']]
>>> d
[1, 2, 3, 4, ['a', 'b']]
dict1
иdict2
указать на тот же самый диктат.