Python 用字典映射代替C语言switch case语句
python没有自己的swith case 语句,官方推荐的是使用if else 语句实现,但是用字典的映射方法也可以实现
。
一、C语言的使用:
colour =1
switch(colour){
case 0 : colour_name='Red';
break;
case 1 : colour_name='Yellow';
break;
case 2 : colour_name='Blue';
break;
case 3 : colour_name='White';
break;
default: colour_name='Black';
break;
}
解释:当colour=1的时候,匹配到case = 1,对应的值是:“Yellow”,如果colour=6,在colour没有对应的值,那么就执行default所对应的值"Black"。
二、Python字典映射:
colour = 1
COLOUR_MAP = {
0: 'Red',
1: 'Yellow',
2: 'Blue',
3: 'White'
}
# 不推荐使用该方法,当Key不存在会报错
# colour = COLOUR_MAP[colour]
# 推荐使用此方法
colour = COLOUR_MAP.get(colour, 'Black')
print colour
# 输出结果:Yellow
解释:当colour=1的时候,对应的值为"Yellow"。若key不存在,返回默认值"Black"
三、将字典映射的值更改为函数:
def get_add(x, y):
"""加法"""
return x + y
def get_mul(x, y):
"""乘法"""
return x * y
def get_sub(x, y):
"""减法"""
return x - y
def get_div(x, y):
"""除法"""
return x / y
# 字典的映射
COUNT_MAP = {
0: get_add,
1: get_mul,
2: get_sub,
3: get_div
}
count = 3
result = COUNT_MAP.get(count, None)
if result:
result = result(10, 2)
print '结果为:', result
else:
print 'Key不存在'
# 输出结果:结果为: 5
# 输入的count = 3, 调用的是get_div()函数, 若要输入count = 6,那么输出结果就是"Key不存在"
用字典映射的好处就是可以让代码更简洁,看起来更优雅,维护起来更方便