我需要一种方法来获得字典值,如果它的键存在,或简单地返回None,如果它不存在。

然而,如果你搜索一个不存在的键,Python会引发一个KeyError异常。我知道我可以检查钥匙,但我在寻找更明确的东西。如果键不存在,是否有一种方法只返回None ?


当前回答

你可以使用dict.get()

value = d.get(key)

如果key不在d中,返回None。你也可以提供一个不同的默认值来代替None:

value = d.get(key, "empty")

其他回答

你可以使用dict.get()

value = d.get(key)

如果key不在d中,返回None。你也可以提供一个不同的默认值来代替None:

value = d.get(key, "empty")

您应该使用dict类中的get()方法

d = {}
r = d.get('missing_key', None)

这将导致r == None。如果在字典中没有找到键,get函数返回第二个参数。

如果你想要一个更透明的解决方案,你可以子类dict来获得这个行为:

class NoneDict(dict):
    def __getitem__(self, key):
        return dict.get(self, key)

>>> foo = NoneDict([(1,"asdf"), (2,"qwerty")])
>>> foo[1]
'asdf'
>>> foo[2]
'qwerty'
>>> foo[3] is None
True

使用dict.get

如果key在字典中,则返回key的值,否则为默认值。如果没有给出default,则默认为None,因此该方法永远不会引发KeyError。

如果你可以使用False,那么,还有hasattr内置函数:

e=dict()
hasattr(e, 'message'):
>>> False