可以用多个if语句设置变量吗?

时间:2013-05-20 21:47:41

标签: python python-2.7

我可以这样做:

x ='dog'

testvar = 1 if x == 'dog'  else 0

在这种情况下,我的x可以是三件事之一。 '狗','猫,或''(空)

如果x =='dog',我想设置testvar等于1,如果x =='cat,则等于2,如果x.isspace()== True,则等于0。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:11)

您可以链接if语句:

testvar = 1 if x == 'dog' else 2 if x == 'cat' else 0 if x.isspace() else None

你确实需要最后的else陈述。 Python认为这基本上是:

testvar = 1 if x == 'dog' else (2 if x == 'cat' else (0 if x.isspace() else None))

每个嵌套的条件表达式填充父表达式的else子句。

演示:

>>> x = 'cat'
>>> 1 if x == 'dog' else 2 if x == 'cat' else 0 if x.isspace() else None
2

另一个更易读的选择是使用映射:

testmapping = {'dog': 1, 'cat': 2, ' ': 0}
testvar = testmapping.get(x)

演示:

>>> testmapping = {'dog': 1, 'cat': 2, ' ': 0}
>>> testmapping[x]
2