dict.copy()

Метод copy() возвращает поверхностную (shallow) копию словаря. У нового словаря те же ключи и значения, но это самостоятельный объект — изменение верхнего уровня в копии не влияет на оригинал. При этом вложенные объекты (списки, словари) копируются по ссылке.

Сигнатура

dict.copy()

Параметры

Метод не принимает параметров.

Возвращаемое значение

Новый объект dict с теми же парами «ключ — значение», что и у исходного словаря.

Примеры использования

Пример 1. Базовое копирование.

original = {"led": 13, "button": 2}
backup = original.copy()
print(backup)
print(original is backup)
{'led': 13, 'button': 2}
False

Пример 2. Изменение копии не трогает оригинал.

settings = {"speed": 100, "mode": "auto"}
draft = settings.copy()
draft["speed"] = 200
print("Оригинал:", settings)
print("Копия:", draft)
Оригинал: {'speed': 100, 'mode': 'auto'}
Копия: {'speed': 200, 'mode': 'auto'}

Пример 3. Поверхностность — вложенные объекты общие.

robot = {"pins": [3, 5, 6], "name": "Phobo"}
clone = robot.copy()
clone["pins"].append(9)
print("Оригинал:", robot["pins"])
print("Копия:", clone["pins"])
Оригинал: [3, 5, 6, 9]
Копия: [3, 5, 6, 9]

Пример 4. Сравнение с dict(d) и {**d}.

Три способа дают одинаковый результат — поверхностную копию:

d = {"a": 1, "b": 2}
c1 = d.copy()
c2 = dict(d)
c3 = {**d}
print(c1 == c2 == c3 == d)
True

Пример 5. Для глубокого копирования используйте copy.deepcopy.

import copy

nested = {"motor": {"speed": 100, "dir": 1}}
deep = copy.deepcopy(nested)
deep["motor"]["speed"] = 0
print("Оригинал:", nested["motor"])
Оригинал: {'speed': 100, 'dir': 1}

См. также

Примечание

Лицензия и источники

Техническое описание метода адаптировано из официальной документации Python (https://docs.python.org), доступной под Python Software Foundation License Version 2. Перевод на русский, примеры использования и пояснения — © AlashEd Wiki.