Python 3.x
from copy import deepcopy
my_dict = {'one': 1, 'two': 2}
new_dict_deepcopy = deepcopy(my_dict)
Без deepcopy я не могу удалить словарь имени хоста из своего домена словарь.
Без deepcopy я получаю следующую ошибку:
"RuntimeError: dictionary changed size during iteration"
... когда я пытаюсь удалить желаемый элемент из моего словаря внутри другого словаря.
import socket
import xml.etree.ElementTree as ET
from copy import deepcopy
domain является объектом словаря
def remove_hostname(domain, hostname):
domain_copy = deepcopy(domain)
for domains, hosts in domain_copy.items():
for host, port in hosts.items():
if host == hostname:
del domain[domains][host]
return domain
Пример вывода: [orginal] domains = {'localdomain': {'localhost': {'all': '4000' }}}
[new] domains = {'localdomain': {}}}
Так что происходит здесь, я итерации по копии словаря, а не итерации по самому словарю. С помощью этого метода вы можете удалить элементы по мере необходимости.