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}
См. также
dict.clear() — очистить словарь
dict.update() — слить два словаря
dict.fromkeys() — создать словарь из ключей
Примечание
Лицензия и источники
Техническое описание метода адаптировано из официальной документации Python (https://docs.python.org), доступной под Python Software Foundation License Version 2. Перевод на русский, примеры использования и пояснения — © AlashEd Wiki.