Обрабатывать необъявленную клавишу dict в Python

В моем приложении Ruby у меня есть хеш-таблица:

c = {:sample => 1,:another => 2} 

Я могу обработать таблицу следующим образом:

 [c[:sample].nil? , c[:another].nil? ,c[:not_in_list].nil?] 

Я пытаюсь сделать то же самое в Python. Я создал новый словарь:

 c = {"sample":1, "another":2} 

Я не мог обработать исключение значения nil для:

 c["not-in-dictionary"] 

Я попробовал это:

 c[:not_in_dictionery] is not None 

и он возвращает исключение вместо False. Как я могу справиться с этим?

One Solution collect form web for “Обрабатывать необъявленную клавишу dict в Python”

В вашем конкретном случае вы должны, вероятно, сделать это вместо сравнения с None :

 "not_in_dictionary" in c 

Если вы буквально используете этот код, это не сработает:

 c[:not_in_dictionary] is not None 

У Python нет специальных : ключевые слова для ключей словаря; вместо этого используются обычные строки.


Обычное поведение в Python заключается в том, чтобы вызвать исключение, когда вы запрашиваете отсутствующий ключ, и позволяете обрабатывать исключение.

 d = {"a": 2, "c": 3} try: print d["b"] except KeyError: print "There is no b in our dict!" 

Если вы хотите получить None если значение отсутствует, вы можете использовать метод dict .get для возврата значения (по умолчанию нет), если ключ отсутствует.

 print d.get("a") # prints 2 print d.get("b") # prints None print d.get("b", 0) # prints 0 

Чтобы просто проверить, имеет ли ключ значение в dict , используйте ключевые слова « in или « not in .

 print "a" in d # True print "b" in d # False print "c" not in d # False print "d" not in d # True 

Python включает модуль, который позволяет вам определять словари, которые возвращают значение по умолчанию вместо ошибки при обычном использовании: collections.defaultdict . Вы можете использовать его так:

 import collections d = collections.defaultdict(lambda: None) print "b" in d # False print d["b"] # None print d["b"] == None # True print "b" in d # True 

Обратите внимание на запутанное поведение с помощью. Когда вы открываете ключ в первый раз, он добавляет его, указывая на значение по умолчанию, поэтому теперь его считают in dict .

  • Обрабатывать исключение, созданное генератором
  • Продвижение функции генератора Python до первого выхода
  • Как создать собственный класс исключений с несколькими init args pickleable
  • Сравнение объектов исключения в Python
  • Как поймать исключение в декораторе, но разрешить вызывающему и его поймать?
  • Как вы проверяете, что функция Python генерирует исключение?
  • Ошибка socket.accept 24: для многих открытых файлов
  • Безопасная функция max () для пустых списков
  • TimeOutException при использовании link_text с явным ожиданием в selenium webdriver с python
  • Глобальная обработка исключений Python
  • Вызывает ли python `os.system` исключение?
  • Python - лучший язык программирования в мире.