Python安全字典键访问

43

我正在寻找一种方便、安全的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))

这三种方法都可以,当然。但是有没有一种简单的开箱即用的方法来实现这一点,而不必使用过多的if语句或自定义函数呢?

我相信应该有,因为这是非常普遍的用法。


5
你的意思是如果键丢失,你想要返回一个默认值吗?那么请使用dict.get() - Martijn Pieters
2个回答

94

你错过了规范方法——dict.get()

color_1 = data.get('color')

如果键不存在,它将返回None。您可以将不同的默认值设置为第二个参数:

color_2 = data.get('color', 'red')

14

查看dict.get()。如果字典中没有找到键,您可以提供一个值来返回,否则它将返回None

>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接