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语句太长太丑,有没有办法缩短它[重复]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法缩短这个 if 语句?

有没有办法缩短我的代码?

有没有办法让这个功能更好? [复制]

SQL 嵌套 N 层太长太难写怎么办?

SQL 嵌套 N 层太长太难写怎么办?

SQL 嵌套 N 层太长太难写怎么办?