让我们说buff是一本字典。我做del buff[k]
,但k不是buff的关键。这是一个错误,或者你的python只是通过线条没有发生任何事情?
答案 0 :(得分:3)
让我们测试一下:
>>> buff={1:2,4:5}
>>> del buff[1]
>>> del buff[6]
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
KeyError: 6
但在这种情况下,del
与它无关。使用[]
表示法访问字典中不存在的键会引发KeyError
请注意,使用buff.pop(k)
会更好(在这种情况下,删除操作会触发KeyError
如果不存在,结果相同)
要创建非崩溃/故障安全方法,请执行以下操作:
if k in buff:
buff.pop(k)
或(更好地请求宽恕而不是许可):
try:
buff.pop(k)
except KeyError:
pass