python如果语句太长太难看,有没有办法缩短它

python if statement too long and ugly, is there a way to shorten it

本问题已经有最佳答案,请猛点这里访问。

我有一个很长很难看的python中的if语句,有没有一种方法可以将它压缩成一个较短的代码块,如果可能的话,可以用一行或两行,因为似乎有一种方法可以缩短这样一段代码

1
2
3
4
5
6
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


有一个字典,其中包含给定p的y值

1
2
p={"A":10,.....}
y=dict[p]


不可能缩短这段代码。正如您可能注意到的,python不提供任何switch case语句。

根据您的用法,您可以将其更改为词典或按值重新计算:

1
2
values = {"A": 10,"B": 11,"C": 12,"D": 13,"E": 14,"F": 15 }
y = values[p]

1
y = ord(p) - ord("A") + 10


使用DICT:

1
2
3
4
5
6
7
8
choice = {
   "A": 10,        
   "B": 11,
   "C": 12,
   "D": 13,
   "E": 14,
   "F": 15
}[selected]

IE.

1
2
3
4
5
6
7
8
9
10
11
12
selected ="A"
choice = {
   "A": 10,        
   "B": 11,
   "C": 12,
   "D": 13,
   "E": 14,
   "F": 15
}[selected]

print choice
>>> 10

通过在dict末尾立即添加[selected]可以很容易地使字典的行为类似于控制流语句。使用此模式,它将始终根据案例进行评估。