首页 > 解决方案 > Pythonic 构造 if 语句以更改变量值的方法?

问题描述

正如标题所说,编写以下代码的pythonic方式是什么?

if x == 1:
    myvar = "a string"
elif x == 2:
    myvar = "another string"
elif x == 3:
    myvar = "yet another string"
else:
    raise Exception("arg x must be 1, 2 or 3")

执行上述操作似乎有点笨拙,对于更长的示例,更耗时且混乱。

标签: pythonpython-3.xpep

解决方案


您想为此使用字典:

x = 3 # Then try with 4

outcome_dict = {1: "some string", 2: "another string", 3: "yet another string"}

my_var = outcome_dict.get(x)

if my_var is None:
    raise Exception("arg x must be 1, 2 or 3")

print(my_var)

如果找不到密钥,该dict.get()方法将返回。None在这个例子中,所有的结果都需要手动输入,outcome_dict但在实践中,很容易为数千个键创建字典:单行代码中的值对,例如字典推导或常规for循环。


推荐阅读