Python字典的安全密钥的访问

Python safe dictionary key access

本问题已经有最佳答案,请猛点这里访问。

我正在寻找一种方便、安全的python字典密钥访问方法。我想到了三种方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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或自定义函数?

我认为应该有,因为这是一个非常常见的用法。


你错过了标准方法,dict.get()

1
color_1 = data.get('color')

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

1
color_2 = dict.get('color', 'red')

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

1
2
3
4
5
6
7
>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'