用于更改变量值的 if 语句结构的 Pythonic 方式?
Pythonic way to structure if statement for changing variable values?
正如标题所说,编写以下代码的 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")
上面的做法似乎有点笨拙,而且对于更长的例子,更费时和凌乱。
你想为此使用字典:
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()
方法将 return None
。在这个例子中,所有的结果都需要在 outcome_dict
中手动输入,但在实践中,很容易为成千上万的键创建字典:一行代码中的值对,例如词典理解 或只是常规 for
循环。
除了@roganjosh 的解决方案,您还可以尝试使用try
和except
。
dict_values = {1: "some string", 2: "another string", 3: "yet another string"}
# Using for x = 3
x = 3
try:
print (outcome_dict[x])
except:
print ("arg x must be 1, 2 or 3")
# yet another string
# Using for x = 4
x = 4
try:
print (outcome_dict[x])
except:
print ("arg x must be 1, 2 or 3")
# arg x must be 1, 2 or 3
正如标题所说,编写以下代码的 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")
上面的做法似乎有点笨拙,而且对于更长的例子,更费时和凌乱。
你想为此使用字典:
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()
方法将 return None
。在这个例子中,所有的结果都需要在 outcome_dict
中手动输入,但在实践中,很容易为成千上万的键创建字典:一行代码中的值对,例如词典理解 或只是常规 for
循环。
除了@roganjosh 的解决方案,您还可以尝试使用try
和except
。
dict_values = {1: "some string", 2: "another string", 3: "yet another string"}
# Using for x = 3
x = 3
try:
print (outcome_dict[x])
except:
print ("arg x must be 1, 2 or 3")
# yet another string
# Using for x = 4
x = 4
try:
print (outcome_dict[x])
except:
print ("arg x must be 1, 2 or 3")
# arg x must be 1, 2 or 3