遍历`OrderedDict`并删除其某些键?

Are*_*Tor 2 python dictionary python-3.x

假设我有一个OrderedDict od带有整数键和整数值的。我想根据发现的值进行迭代od并删除的元素od。基本上我想实现的是:

od = {1: 2, 2: 4, 3: 5}

for key in od:
    del od[key]
Run Code Online (Sandbox Code Playgroud)

最后我想od等于{1: 2, 3: 5}。Python不允许OrderedDict在其迭代期间更改an的大小。有可能克服这个问题吗?

我正在使用Python 3.5

Moi*_*dri 5

那是因为您无法修改其长度dict。相反,您必须遍历dictas 中的键列表的副本:

# For both Python 3.x and 2.7
>>> for key in list(od):
...     del od[key]
...
>>> od
{}
Run Code Online (Sandbox Code Playgroud)

但是在Python2.7中,甚至可以使用它dict.keys()来获得相同的行为:

# In Python 2.7
>>> for key in od.keys():
...     del od[key]
...
>>> od
{}
Run Code Online (Sandbox Code Playgroud)