0

我可以做这个:

x ='dog'

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

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

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

最好的方法是什么?

4

1 回答 1

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
于 2013-05-20T21:49:07.583 回答