我需要一种方法来获得字典值,如果它的键存在,或简单地返回None,如果它不存在。
然而,如果你搜索一个不存在的键,Python会引发一个KeyError异常。我知道我可以检查钥匙,但我在寻找更明确的东西。如果键不存在,是否有一种方法只返回None ?
我需要一种方法来获得字典值,如果它的键存在,或简单地返回None,如果它不存在。
然而,如果你搜索一个不存在的键,Python会引发一个KeyError异常。我知道我可以检查钥匙,但我在寻找更明确的东西。如果键不存在,是否有一种方法只返回None ?
当前回答
您应该使用dict类中的get()方法
d = {}
r = d.get('missing_key', None)
这将导致r == None。如果在字典中没有找到键,get函数返回第二个参数。
其他回答
不要再疑惑了。这是内置在语言中的。
>>> help(dict) Help on class dict in module builtins: class dict(object) | dict() -> new empty dictionary | dict(mapping) -> new dictionary initialized from a mapping object's | (key, value) pairs ... | | get(...) | D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. | ...
我通常在这种情况下使用defaultdict。您提供一个不接受参数的工厂方法,并在看到新键时创建一个值。当您希望在新键上返回一个空列表之类的内容时,它会更有用(请参阅示例)。
from collections import defaultdict
d = defaultdict(lambda: None)
print d['new_key'] # prints 'None'
一个简单的解决方案是:
item['key'] if 'key' in item else None
这在尝试将字典值添加到新列表并希望提供默认值时非常有用:
eg.
row = [item['key'] if 'key' in item else 'default_value']
正如上面其他人所说,您可以使用get()。
但要检查密钥,你还可以这样做:
d = {}
if 'keyname' in d:
# d['keyname'] exists
pass
else:
# d['keyname'] does not exist
pass
d1 ={“一”:1、“两个”:2,“三”:3} d1.get(“四”)
如果你要运行这段代码,将不会有'Keyerror',这意味着你可以使用'dict.get()'来避免错误并执行你的代码