В вашем конкретном случае вам, вероятно, следует сделать это вместо сравнения с 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
.