一,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)