このセットと、選択した果物を示す入力 GET パラメーターを指定すると、
fruit = {'apple', 'banana', 'orange', 'pear'}
Pythonでこれを1行で行うコンパクトな方法はありますか?
chosen = request_obj.get('fruit', '')
if chosen not in fruit:
chosen = ''
このセットと、選択した果物を示す入力 GET パラメーターを指定すると、
fruit = {'apple', 'banana', 'orange', 'pear'}
Pythonでこれを1行で行うコンパクトな方法はありますか?
chosen = request_obj.get('fruit', '')
if chosen not in fruit:
chosen = ''
別の方法は次のとおりです。
>>> fruit = {'apple','banana','orange','pear'}
>>> d = {'fruit': 'apple'}
>>> d['fruit'] if 'fruit' in d and d['fruit'] in fruit else ''
'apple'
>>> d['fruit'] = 'watermellon'
>>> d['fruit'] if 'fruit' in d and d['fruit'] in fruit else ''
''
正直なところ、あなたが持っているものはより読みやすく、より良い選択だと思います.
あなたは簡単に行うことができます -
fruit = {'apple', 'banana', 'orange', 'pear'}
input_get_param = 'some_other_fruit'
if input_get_param in fruit:
chosen = input_get_param
print 'pear is in the set'
else:
chosen = ''
set
Pythonの実装では、基になるデータ構造としてハッシュテーブルが使用されるため、最初にセット ルックアップを優先します。ハッシュテーブル内のアイテムの検索は平均して O(1) 操作であるため、これは O(1) メンバーシップ チェックを説明しています。したがって、ルックアップはかなり安価です。
>>> fruit = {'apple','banana','orange','pear'}
>>> d = {'fruit': 'apple'}
>>> chosen = '' if d.get('fruit','') not in fruit else d.get('fruit','')
>>> chosen
'apple'
>>> d['fruit'] = 'watermellon'
>>> chosen = '' if d.get('fruit','') not in fruit else d.get('fruit','')
>>> chosen
''