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