07 Июл 2023
2 мин
1438

Копирование словарей в Python

Одной из распространенных проблем, с которой сталкиваются начинающие программисты на Python, является изменение оригинального словаря при редактировании

Содержание

Одной из распространенных проблем, с которой сталкиваются начинающие программисты на Python, является изменение оригинального словаря при редактировании его копии. Возникает она из-за неправильного понимания механизма копирования объектов в Python.

Рассмотрим пример этой проблемы:

original = {"key1": "value1", "key2": "value2"}
copy = original
copy["key2"] = "new_value"
print(original)

После выполнения этого кода вывод будет следующим: {'key1': 'value1', 'key2': 'new_value'}. То есть, изменился не только copy, но и original, хотя мы не вносили в него никаких изменений.

Это происходит потому, что в Python при присваивании словаря другому словарю (например, copy = original) создается не новый словарь, а ссылка на оригинальный. Поэтому любые изменения в copy приведут к изменению original.

Чтобы сделать настоящую копию словаря, которую можно изменять без воздействия на оригинал, следует использовать метод copy() или функцию dict().

Примеры:

original = {"key1": "value1", "key2": "value2"}
copy = original.copy()
copy["key2"] = "new_value"
print(original)

или

original = {"key1": "value1", "key2": "value2"}
copy = dict(original)
copy["key2"] = "new_value"
print(original)

В обоих случаях вывод будет: {'key1': 'value1', 'key2': 'value2'}, то есть оригинальный словарь не изменился.

Таким образом, для создания и редактирования копии словаря без изменения оригинала необходимо использовать метод copy() или функцию dict().

Содержание

Добавить комментарий

Определи профессию по рисунку