我們現(xiàn)在可以創(chuàng)建一個(gè)dict,保存名字和成績(jī)的對(duì)應(yīng)關(guān)系。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Gaven': 86 }
此時(shí),如果想通過(guò)名字來(lái)查詢某個(gè)同學(xué)的成績(jī),也就是通過(guò)key來(lái)查詢value,這個(gè)時(shí)候怎么辦呢?
dict提供通過(guò)key找到對(duì)應(yīng)value的功能,通過(guò)d[key]
的形式,就可以得到對(duì)應(yīng)的value。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Gaven': 86 } print(d['Bob']) # ==> 60 print(d['Alice']) # ==> 45
這和list通過(guò)下標(biāo)找到對(duì)應(yīng)位置的元素是類似的。
回顧一下前面使用下標(biāo)的方式訪問(wèn)list元素的時(shí)候,當(dāng)下標(biāo)不存在時(shí),就會(huì)引發(fā)錯(cuò)誤,在dict中,也是一樣的,當(dāng)對(duì)應(yīng)的key不存在時(shí),也會(huì)引發(fā)錯(cuò)誤。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Gaven': 86 } print(d['Dodo']) # 拋出異常 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Dodo'
它的意思是key不存在,因此我們?cè)谛枰ㄟ^(guò)key找到value時(shí),一定要先判斷key存不存在,然后才使用上面的方式獲取對(duì)應(yīng)的value,以避免錯(cuò)誤。
if 'Alice' in d: print(d['Alice']) # ==> 45 if 'Dodo' in d: # Dodo不存在,所以不會(huì)走下面的邏輯 print(d['Dodo'])
除了使用這種方法,還有一種方法可以通過(guò)key來(lái)獲取對(duì)應(yīng)的value,這種方法不會(huì)引起錯(cuò)誤,dict本身提供get方法,把key當(dāng)作參數(shù)傳遞給get方法,就可以獲取對(duì)應(yīng)的value,當(dāng)key不存在時(shí),也不會(huì)報(bào)錯(cuò),而是返回None。
print(d.get('Alice')) # ==> 45 print(d.get('Dodo')) # ==> None
因?yàn)橥ㄟ^(guò)get方法在代碼實(shí)現(xiàn)上更加簡(jiǎn)單,且不會(huì)引起錯(cuò)誤,因此更加推薦使用get方法來(lái)獲取dict的元素。
根據(jù)如下dict,打印出Alice, Bob, Candy, Mimi, David的成績(jī),當(dāng)同學(xué)不存在時(shí),打印None。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49 }
參考答案:
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49 } print(d.get('Alice')) print(d.get('Bob')) print(d.get('Candy')) print(d.get('Mimi')) print(d.get('David'))
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)