python中switch语句上不同值的相同输出
我在phyton中有这段代码,我想这样做,如果输入是-1,那么返回的也是字符串“zero” 所以我想知道是否有任何方法可以让我做一些事情,比如:python中switch语句上不同值的相同输出,python,switch-statement,Python,Switch Statement,我在phyton中有这段代码,我想这样做,如果输入是-1,那么返回的也是字符串“zero” 所以我想知道是否有任何方法可以让我做一些事情,比如: switcher = { 0 or -1: "zero", 1: "one", 2: "two", } 您只需添加一个附加键: def IntToStr(argument): switcher = {0: "
switcher = {
0 or -1: "zero",
1: "one",
2: "two",
}
您只需添加一个附加键:
def IntToStr(argument):
switcher = {0: "zero",
-1: "zero",
1: "one",
2: "two"}
return switcher.get(argument, "nothing")
也可以在函数的开头添加一行:
def IntToStr(argument):
argument = 0 if argument == -1 else argument
switcher = {0: "zero",
1: "one",
2: "two"}
return switcher.get(argument, "nothing")
您只需添加一个附加键:
def IntToStr(argument):
switcher = {0: "zero",
-1: "zero",
1: "one",
2: "two"}
return switcher.get(argument, "nothing")
也可以在函数的开头添加一行:
def IntToStr(argument):
argument = 0 if argument == -1 else argument
switcher = {0: "zero",
1: "one",
2: "two"}
return switcher.get(argument, "nothing")
您可以使用defaultdict(来自集合)并将键表示为元组,然后在最终切换器内容中展开元组。这样,您就不必重复公共键的值。您也不需要在执行.get()操作的任何地方重复默认值: 您可以通过创建一个函数来概括这一点,该函数将对任何切换字典进行元组扩展:
from collections import defaultdict
def switch(d,default=None):
return defaultdict(lambda:default,
{ k:v for ks,v in d.items() for k in ks })
switcher = switch({ (0,-1): "zero",
(1,): "one",
(2,): "two"},
default = "nothing")
如果您希望模拟switch/case语句的行为,则可以创建一个函数,用于一次过for循环:
def switch(value): yield lambda *match: value in match
用法:
x = -1
for case in switch(x):
if case(-1,0) : r = "zero"
elif case(1) : r = "one"
elif case(2) : r = "two"
else : r = "nothing"
print(r) # zero
您可以使用defaultdict(来自集合)并将键表示为元组,然后在最终切换器内容中展开元组。这样,您就不必重复公共键的值。您也不需要在执行.get()操作的任何地方重复默认值: 您可以通过创建一个函数来概括这一点,该函数将对任何切换字典进行元组扩展:
from collections import defaultdict
def switch(d,default=None):
return defaultdict(lambda:default,
{ k:v for ks,v in d.items() for k in ks })
switcher = switch({ (0,-1): "zero",
(1,): "one",
(2,): "two"},
default = "nothing")
如果您希望模拟switch/case语句的行为,则可以创建一个函数,用于一次过for循环:
def switch(value): yield lambda *match: value in match
用法:
x = -1
for case in switch(x):
if case(-1,0) : r = "zero"
elif case(1) : r = "one"
elif case(2) : r = "two"
else : r = "nothing"
print(r) # zero
我尝试了第二个字典,调用switcher[-1]可以完美地返回“零”。但是,我不知道为什么切换器[0]会出现一个键错误。我确实尝试了第二个字典,调用切换器[-1]可以完美地返回“零”。但是,我不知道为什么切换器[0]会出现一个键错误。