给定这个集合和一个指示所选水果的输入 GET 参数
fruit = {'apple', 'banana', 'orange', 'pear'}
有没有一种紧凑的方法可以在 python 的一行中做到这一点?
chosen = request_obj.get('fruit', '')
if chosen not in fruit:
chosen = ''
给定这个集合和一个指示所选水果的输入 GET 参数
fruit = {'apple', 'banana', 'orange', 'pear'}
有没有一种紧凑的方法可以在 python 的一行中做到这一点?
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 = ''
我更喜欢首先设置查找,因为 pythonset
实现使用哈希表作为它的底层数据结构。这解释了 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
''