Я пытаюсь изменить объект словаря, перебирая его. Но python вызовет RuntimeError
, сказав, что dictionary changed size during iteration
, чтобы избежать неожиданного поведения (это ожидается).
>>> a = {1: 2, 2: 3}
>>> for key in a:
... if key % 2 == 0:
... a.pop(key)
...
3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
Но что на самом деле меня удивило, так это то, что вышеприведенный кодовый блок завершился с RuntimeError
словарь a
изменился.
>>> a
{1: 2}
Почему это так? Это поведение где-то задокументировано?.
Ниже моя python версия и реализация.
>>> import sys, platform
>>> sys.version_info
sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0)
>>> platform.python_implementation()
'CPython'