Как-то неожиданно столкнулся с такой проблемой. Во время цикла for по словарю мне нужно удалять из него записи, но как не крути вылазит ошибка :
RuntimeError: dictionary changed size during iteration
Я даже пробовал делать снапшот словаря перед итерацией и итерировать двойника при этом удаляя из оригинала.
Пример:
>>> ot={12:'wqe',13:'wqe',14:'wqe',15:'wqe'}
>>> ot1=ot
>>> for i in ot1:
... del ot[i]
...
Traceback (most recent call last):
File "
Ответ
Вы неверно понимаете причину происходящего. Вы задаете вопрос Как удалять правильно, но верный вопрос Как копировать правильно? Вы передаете ссылку на объект из ot в ot1, то есть при этом ot и ot1 дают указатель на один и тот же словарь. ПРИМЕР x=['wtf', 'justdoit'] x1=x x1[0]='omg' print x >> ['omg', 'justdoit']
Комментариев нет:
Отправить комментарий