a = {1: 10, 2: 20} # Скопировать словарь присваиванием нельзя. # Обе переменные связаны # с одним и тем же объектом. b = a b[2] = 40 # Поэтому изменение словаря через # одну переменную # видны через другую. print(a) print(b) print('----------') a = {1: 10, 2: 20} # Чтобы скопировать словарь # используется метод copy() b = a.copy() b[2] = 40 # Теперь a и b указывают # на разные словари. print(a) print(b) print('----------') a = {1: 'hello', 2: ['a']} # Однако метод copy() создает только # поверхностную копию объекта. # Это значит, что если элемент объекта # является составным, то копируется # не сам элемент, а ссылка на него. b = a.copy() b[1] = 'hi' # Поэтому изменения такого элемента # изменяет оба словаря, # в которых есть ссылка на него. b[2].append('b') print(a) print(b)
{1: 10, 2: 40} {1: 10, 2: 40} ---------- {1: 10, 2: 20} {1: 10, 2: 40} ---------- {1: 'hello', 2: ['a', 'b']} {1: 'hi', 2: ['a', 'b']}