一,Python 字典映射,代替 switch函数
Python中,没有switch,在别的语言中为spa
switch(day) { case 0: dayName="Sunday"; break; case 1: dayName="Monday"; break; case 2: dayName="Tuesday"; break; ....... default : dayName="Unknown" }
上例,在Python中,用字典映射code
1)当day的值存在字典的key中时blog
day=2 switcher={ 0:'Sunday', 1:'Monday', 2:'Tuesday', } day_name=swticher[day] print(day_name)
2)当day的值不存在字典switcher中,并且要有默认真时。get
day=6 switcher={ 0:'Sunday', 1:'Monday', 2:'Tuesday', } day_name=swticher.get(day,unknown) #使用get()方法,当值超出时可获得默认值unknown print(day_name)
3)当字典中的值为代码块的时候it
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)
二推导式class
1)map
#列表推导式 #集合推导式 #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)字典的推导filter
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)