0
0 комментариев

Как-то неожиданно столкнулся с такой проблемой. Во время цикла 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 "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration

Как удалять правильно?

upd:
разобрался,

снапшот был уместен, но сделан чуть чуть неправильно
вот так правильно:

>>> ot={12:'wqe',13:'wqe',14:'wqe',15:'wqe'}
>>> ot1=ot.copy()
>>> for i in ot1:
...  del ot[i]


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