在"for"循环(Python)中从字典中删除项目的正确方法是什么?

Cor*_*ory -1 python

我想迭代字典,检查值并删除与特定值匹配的项目.

d = {1, 1, 2, 1, 4, 5}   
for i in d:
  if i == 1:
    del i
Run Code Online (Sandbox Code Playgroud)

但我们知道这样做很危险,因为列表在迭代时会更新.在Python中这样做的干净方法是什么?

Nou*_*him 7

如果k是你的字典,你可以做

k = {x:v for x,v in k.iteritems() if x != 1}
Run Code Online (Sandbox Code Playgroud)

适用于2.7+和3.0

对于任何年龄较大的人,你都可以

k = dict((x,v) for x,v in k.iteritems() if x!=1)
Run Code Online (Sandbox Code Playgroud)