Python 如何巧妙地实现多条件过滤?

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 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==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)
这看起来非常干净,如果需要,还允许以编程方式生成查找表本身