Python 3.x 在python中修改字典时出现意外行为

Python 3.x 在python中修改字典时出现意外行为,python-3.x,dictionary,runtime-error,cpython,python-internals,Python 3.x,Dictionary,Runtime Error,Cpython,Python Internals,我试图在迭代字典对象时修改它。但是python将引发一个运行时错误,表示字典在迭代过程中更改了大小,以避免意外行为(这是意料之中的) 为什么?。这种行为是否有记录在案 下面是我的python版本和实现 >>> import sys, platform >>> sys.version_info sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0) >>&

我试图在迭代字典对象时修改它。但是python将引发一个
运行时错误
,表示
字典在迭代过程中更改了大小
,以避免意外行为(这是意料之中的)

为什么?。这种行为是否有记录在案

下面是我的python版本和实现

>>> import sys, platform
>>> sys.version_info
sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0)
>>> platform.python_implementation()
'CPython'

我认为原因是,在弹出该项后,当尝试转到下一个键值时,
for
循环失败。换句话说,错误发生在删除键、值对之后。查看答案

最好创建一份dict副本,让
gc
完成其余部分

b={k:v代表k,a.items()中的v如果k%2!=0}

是,会在上引发
运行时错误。因此,只有在对象发生第一次变异后,它才能知道对象发生了变化。谢谢你的回答。
>>> a
{1: 2}
>>> import sys, platform
>>> sys.version_info
sys.version_info(major=3, minor=8, micro=0, releaselevel='final', serial=0)
>>> platform.python_implementation()
'CPython'