4

このセットと、選択した果物を示す入力 GET パラメーターを指定すると、

fruit = {'apple', 'banana', 'orange', 'pear'}

Pythonでこれを1行で行うコンパクトな方法はありますか?

chosen = request_obj.get('fruit', '')

if chosen not in fruit:
    chosen = ''
4

3 に答える 3

1

別の方法は次のとおりです。

>>> 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 ''
''

正直なところ、あなたが持っているものはより読みやすく、より良い選択だと思います.

于 2012-07-05T18:21:54.413 に答える
0

あなたは簡単に行うことができます -

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 = ''

setPythonの実装では、基になるデータ構造としてハッシュテーブルが使用されるため、最初にセット ルックアップを優先します。ハッシュテーブル内のアイテムの検索は平均して O(1) 操作であるため、これは O(1) メンバーシップ チェックを説明しています。したがって、ルックアップはかなり安価です。

于 2012-07-05T18:16:24.107 に答える
0
>>> 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
''
于 2012-07-05T18:17:07.023 に答える