Python 将这个if语句集群转换为somthing clearner

Python 将这个if语句集群转换为somthing clearner,python,python-2.7,Python,Python 2.7,嗯,我想弄明白如何把我的if语句的小簇缩短成更短的东西 这是我尝试做的一个小版本 import sys v1 = "1" v2 = "2" if sys.argv[1] == "any" and sys.argv[2] == "any": print "nofliter" elif sys.argv[1] == v1 and sys.argv[2] == v2: print "filtering both" elif sys.argv[1] == v1

嗯,我想弄明白如何把我的if语句的小簇缩短成更短的东西

这是我尝试做的一个小版本

import sys

v1 = "1"
v2 = "2"


if sys.argv[1] == "any" and sys.argv[2] == "any":
        print "nofliter"

elif sys.argv[1] == v1 and sys.argv[2] == v2:
        print "filtering both"

elif sys.argv[1] == v1 and sys.argv[2] == 'any':
        print "filtering half"
这相当令人困惑。但是我希望有人能通过阅读这篇文章来了解我想要做的事情。到目前为止,我只设置了2个变量,但当我完成后,我可能会设置超过8个变量

基本上,如果某件事没有定义,那么任何事情都可以

例如:

if varible1 == 80 and varible2 == 100:
   print "something"

if varible1 == anything and varible2 == 230:
   print "something"

我不知道我的pesudo代码是否有意义,但仅此而已。

如果我正确理解您的目标,您可能希望这样编写:

possible_values = (1, 2, 3, 4) # put the acceptable values of arguments here

if (sys.argv[1] in possible_values and sys.argv[2] in possible_values):
  print("filtering both")
elif (sys.argv[1] in possible_values or sys.argv[2] in possible_values):
  print("filtering half")
else:
  print("nofilter")

如果您不想这样做,请详细解释。

使用字典和
冻结设置
键:

params_dict = {frozenset(('any',)): 'nofilter',
              frozenset(('1', '2')): 'filter both', 
              frozenset(('any', '1')): 'filter half', 
              frozenset(('any', '2')): 'filter half',
              ....
              }

params_descr = params_dict.get(frozenset(sys.argv[1:3]))

if params_descr is not None:
    print(params_descr)

你能说明什么是有效输入,即参数1和参数2的有效值吗?这是可行的,有3个不同的变量,其中一些变量的可接受值超过10亿。不过我想我自己也弄明白了。