Python 如何巧妙地实现多条件过滤?
我需要找到一种方法,使搜索部分更加巧妙和简洁。如果您有任何想法避免过多的If elif,我将不胜感激(我不介意您是否使用mysql或其他数据库)。以下是我的代码:Python 如何巧妙地实现多条件过滤?,python,Python,我需要找到一种方法,使搜索部分更加巧妙和简洁。如果您有任何想法避免过多的If elif,我将不胜感激(我不介意您是否使用mysql或其他数据库)。以下是我的代码: if x==0 and y==0: query=db.session.filter(condition A, condition B) elif x==0 and y==1: query=db.session.filter(condition A, condition C) elif x==1 and y=
if x==0 and y==0:
query=db.session.filter(condition A, condition B)
elif x==0 and y==1:
query=db.session.filter(condition A, condition C)
elif x==1 and y==0:
...
还有一个问题:x和y的默认值为-1,如果y==-1,代码可能如下:
lookup_table = {
#x y
(0, 0): (condition A, condition B),
(0, 1): (condition A, condition C),
(0,-1): condition A #the condition B should be omited
(-1,0): condition B #the condition A should be omited
# ...
}
现在arg1,*arg2=lookup_table[(x,y)]就可以了,但我认为它不够干净。有什么建议吗?您可以使用字典创建查找表,并使用
x
和y
的元组对其进行索引:
# Create the lookup table
lookup_table = {
#x y
(0, 0): (condition A, condition B),
(0, 1): (condition A, condition C),
# ...
}
# Find the values required for the (x, y) key
arg1, arg2 = lookup_table[(x, y)]
# Call the filter method
query = db.session.filter(arg1, arg2)
这看起来非常干净,如果需要,还允许以编程方式生成查找表本身