web-dev-qa-db-ja.com

Python安全な辞書キーアクセス

私は便利で安全な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つの方法はすべて機能します。しかし、余分なifsやカスタム関数を使用せずにこれを実現する簡単な方法はありますか?

これは非常に一般的な使用法であるため、あるはずだと思います。

14
nipunasudha

正規メソッド dict.get() がありません:

color_1 = data.get('color')

キーがない場合はNoneを返します。別のデフォルトを2番目の引数として設定できます。

color_2 = dict.get('color', 'red')
18
Martijn Pieters

チェックアウト dict.get() 。辞書にキーが見つからない場合に返す値を指定できます。それ以外の場合はNoneを返します。

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