我可以这样做:
x ='dog'
testvar = 1 if x == 'dog' else 0
在这种情况下,我的x可以是三件事之一。 '狗','猫,或''(空)
如果x =='dog',我想设置testvar等于1,如果x =='cat,则等于2,如果x.isspace()== True,则等于0。
这样做的最佳方式是什么?
答案 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