Ответ 1
В вашем конкретном случае вы должны, вероятно, сделать это вместо сравнения с 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
для возврата значения (None
по умолчанию), если ключ отсутствует.
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
. Когда вы просматриваете ключ в первый раз, он добавляет его, указывая на значение по умолчанию, поэтому теперь он считается in
dict
.