私は便利で安全な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))
もちろん、3つの方法はすべて機能します。しかし、余分なif
sやカスタム関数を使用せずにこれを実現する簡単な方法はありますか?
これは非常に一般的な使用法であるため、あるはずだと思います。
正規メソッド dict.get()
がありません:
color_1 = data.get('color')
キーがない場合はNone
を返します。別のデフォルトを2番目の引数として設定できます。
color_2 = dict.get('color', 'red')
チェックアウト dict.get()
。辞書にキーが見つからない場合に返す値を指定できます。それ以外の場合はNone
を返します。
>>> data = {'color': 'yellow'}
>>> data.get('color')
'yellow'
>>> data.get('name') is None
True
>>> data.get('name', 'nothing')
'nothing'