一,Python 字典映射,代替 switch
Python中,没有switch,在别的语言中为
switch(day) { case 0: dayName="Sunday"; break; case 1: dayName="Monday"; break; case 2: dayName="Tuesday"; break; ....... default : dayName="Unknown" }
上例,在Python中,用字典映射
1)当day的值存在字典的key中时
day=2 switcher={ 0:'Sunday', 1:'Monday', 2:'Tuesday', } day_name=swticher[day] print(day_name)
2)当day的值不存在字典switcher中,而且要有默认真时。
day=6 switcher={ 0:'Sunday', 1:'Monday', 2:'Tuesday', } day_name=swticher.get(day,unknown) #使用get()方法,当值超出时可得到默认值unknown print(day_name)
3)当字典中的值为代码块的时候
day=5 def get_sunday(): return 'Sunday' def get_monday(): return 'Monday' def get_tuesday(): return 'Tuesday' def get_default(): return 'Unknown' switcher={ 0:get_sunday, 1:get_monday, 2:get_tuesday } day_name=switcher.get(day,get_default)() #直接返回函数 print(day_name)
二推导式
1)
#列表推导式 #集合推导式 #map filter #set 也可以被推导 #dict,也可以被推导 a=[1,2,3,4,5,6,7,8,9] #要求,计算a中各项的平方 b=[i*i for i in a] #i*i也可以写为i**2,所以,i的3次方,也可以写为i**3 print(b)
2)
#列表推导式 #集合推导式 #map filter #set 也可以被推导 #dict,也可以被推导 a=[1,2,3,4,5,6,7,8,9] #要求,计算a大于等于中各项的平方 b=[i*i for i in a if i>=5] #注,推导不至可以用[],也可以用{},如果b={i*i for i in a if i>=5} 但得到的类型就不同了。
print(b)
3)字典的推导
students={ '小晨':15, '浸染':45, '当当':12 } b=[key for key,value in students.items()] #因为字典是key,和value两个值,所以也要两个参数(必须的) 同时要使用函数items() print(b)
4)字典的推导,让字典的key与value相反输出
students={ '小晨':15, '浸染':45, '当当':12 } b={value:key for key,value in students.items()} print(b)