4

给定这个集合和一个指示所选水果的输入 GET 参数

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

有没有一种紧凑的方法可以在 python 的一行中做到这一点?

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

我更喜欢首先设置查找,因为 pythonset实现使用哈希表作为它的底层数据结构。这解释了 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 回答