Python安全字典密钥访问

nip*_*dha 9 python dictionary logical-operators

我正在寻找一个方便,安全的python字典密钥访问方法.以下是我想到的三种方式.

data = {'color': 'yellow'}

# approach one
color_1 = None
if 'color' in data:
    color_1 = data['color']

# approach two
color_2 = data['color'] if 'color' in data else None


# approach three
def safe(obj, key):
    if key in obj:
        return obj[key]
    else:
        return None

color_3 = safe(data, 'color')

#output
print("{},{},{}".format(color_1, color_2, color_3))
Run Code Online (Sandbox Code Playgroud)

当然,这三种方法都有效.但是,有没有任何简单的开箱即用的方法来实现这一点,而不必使用多余的ifs或自定义功能?

我相信应该有,因为这是一种非常常见的用法.

Mar*_*ers 20

你错过了规范的方法,dict.get():

color_1 = data.get('color')
Run Code Online (Sandbox Code Playgroud)

None如果密钥丢失,它将返回.您可以将其他默认值设置为第二个参数:

color_2 = dict.get('color', 'red')
Run Code Online (Sandbox Code Playgroud)


mha*_*wke 5

结帐dict.get()。如果在字典中找不到键,则可以提供一个值以返回,否则它将返回None

>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'
Run Code Online (Sandbox Code Playgroud)