Python 安全字典密钥访问
Python safe dictionary key access
我正在寻找一种方便、安全的 python 字典键访问方法。我想到了以下 3 种方法。
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
s 或自定义函数?
我相信应该有,因为这是很常见的用法。
您错过了规范方法,dict.get()
:
color_1 = data.get('color')
如果密钥丢失,它将 return None
。您可以将不同的默认值设置为第二个参数:
color_2 = data.get('color', 'red')
查看 dict.get()
。如果在字典中找不到该键,您可以为 return 提供一个值,否则它将 return None
.
>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'
我正在寻找一种方便、安全的 python 字典键访问方法。我想到了以下 3 种方法。
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
s 或自定义函数?
我相信应该有,因为这是很常见的用法。
您错过了规范方法,dict.get()
:
color_1 = data.get('color')
如果密钥丢失,它将 return None
。您可以将不同的默认值设置为第二个参数:
color_2 = data.get('color', 'red')
查看 dict.get()
。如果在字典中找不到该键,您可以为 return 提供一个值,否则它将 return None
.
>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'