Давайте проверим это:
>>> 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