Что произойдет, если я удалю несуществующий ключ в классе словаря Python? - PullRequest
0 голосов
/ 22 мая 2018

Скажем, бафф - это словарь.Я делаю del buff[k], но k не является ключом к положительному результату.Это ошибка, или вы просто пропускаете строку, как будто ничего не случилось?

1 Ответ

0 голосов
/ 22 мая 2018

Давайте проверим это:

>>> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...