python if语句太长太丑,有没有办法缩短它[重复]
Posted
技术标签:
【中文标题】python if语句太长太丑,有没有办法缩短它[重复]【英文标题】:python if statement too long and ugly, is there a way to shorten it [duplicate] 【发布时间】:2014-10-19 20:07:16 【问题描述】:我在python中有这个又长又丑的else if语句,有没有办法把它压缩成一个较短的代码块,如果可能的话,可能在一两行,因为似乎有一种方法可以缩短一段像这样的代码
if p == "A": y = 10
elif p == "B": y = 11
elif p == "C": y = 12
elif p == "D": y = 13
elif p == "E": y = 14
elif p == "F": y = 15
【问题讨论】:
您可以使用字典作为 switch 语句。 另见***.com/questions/60208/… 【参考方案1】:有一个字典,其中包含给定 p 的 y 值
p="A":10,.....
y=dict[p]
【讨论】:
你最好使用.get(p, None)
,因为你可以提供一个可选的默认参数来避免抛出异常。
或者更好地使用DefaultDict
这样您就不必使用.get(key, defaultValue)
表单。【参考方案2】:
使用字典:
choice =
"A": 10,
"B": 11,
"C": 12,
"D": 13,
"E": 14,
"F": 15
[selected]
即。
selected = "A"
choice =
"A": 10,
"B": 11,
"C": 12,
"D": 13,
"E": 14,
"F": 15
[selected]
print choice
>>> 10
通过在字典的末尾立即添加[selected]
可以很容易地得到一个表现得像控制流语句的字典。使用这种模式,它将始终评估案例。
【讨论】:
【参考方案3】:不可能缩短这段代码。您可能已经注意到,python 不提供任何 switch-case 语句。
根据您的使用情况,您可以将其更改为字典或按值重新计算:
values = "A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15
y = values[p]
或
y = ord(p) - ord("A") + 10
【讨论】:
我对 y= ord()... 解决方案也有同样的想法。以上是关于python if语句太长太丑,有没有办法缩短它[重复]的主要内容,如果未能解决你的问题,请参考以下文章