前面我們學(xué)習(xí)了Python的列表和元組,如果你用心的學(xué)習(xí)了前面的內(nèi)容并通過相關(guān)習(xí)題進(jìn)行了一定的訓(xùn)練,那么接下來的學(xué)習(xí)會(huì)水到渠成。在Python中我們一定要明白一點(diǎn),Python是一種解釋型語言,因此它會(huì)提供很多人性化的工具給我們使用,接下來的幾節(jié)我們來學(xué)習(xí)一個(gè)新的數(shù)據(jù)類型——字典。
字典和列表和元組不同,字典中存儲的是一組數(shù)據(jù),也就是說字典中的每個(gè)數(shù)據(jù)都包含了兩個(gè)部分,大家可以這么理解,字典中存放了一個(gè)學(xué)生名字,每個(gè)學(xué)生的名字前面都對應(yīng)了一個(gè)學(xué)號,我們可以把學(xué)號理解為‘鍵’,姓名理解為‘值’。
下面介紹幾點(diǎn)字典的特性:
1) 字典是沒有順序的,是任意對象的無序集合。
2) 字典的鍵是唯一的,不能多次出現(xiàn),多次出現(xiàn)時(shí)取最后一個(gè)值。
3) 鍵是不可變的。
4) 字典中的元素可增刪。
5) 因?yàn)闆]有順序,所以不存在索引。
1. 字典的形式及創(chuàng)建
通過學(xué)生姓名那個(gè)例子,已經(jīng)提到過字典每個(gè)元素包含2個(gè)部分,他們分別是‘鍵’和‘值’,鍵和值之間用‘:’隔開,兩個(gè)元素之間用‘,’隔開。
它的語法形式為:
my_dict = {‘key’ : ‘value’,’key1’ = ‘value1’....}
其中my_dict 為我們要?jiǎng)?chuàng)建的字典,key為鍵,value為鍵對應(yīng)的值,他們可以是任何數(shù)類型。
創(chuàng)建空字典的方式為:
>>> my_dict = {}#直接進(jìn)行創(chuàng)建 >>> my_dict {} >>> type(my_dict)#看一下它的類型 <class 'dict'>
我們來創(chuàng)建一個(gè)字典,字典里有5個(gè)學(xué)號分別為1001,1002,1003,1004,1005,每個(gè)學(xué)號對應(yīng)的名字為‘李華’,‘張三’,‘小雪’,‘小張’,‘小明’。
>>> my_dict = {1001:'李華',1002:'張三',1003:'小雪',1004:'小張',1005:'小明'} >>> my_dict#交互模式下輸人名字是直接訪問輸出 {1001: '李華', 1002: '張三', 1003: '小雪', 1004: '小張', 1005: '小明'}
字典的形式大致就是這樣,每個(gè)元素對應(yīng)兩個(gè)部分,前面的為‘鍵’,后面的為‘值’。
要注意鍵是不可以修改的,而值是可以變的,因此鍵要取不可變類型的數(shù)據(jù)。
2. 字典元素的訪問
在字典中訪問元素一般是通過訪問其鍵的形式來獲取它對應(yīng)的值。
我們繼續(xù)使用上面創(chuàng)建的字典,我們進(jìn)行訪問其值:
>>> my_dict = {1001:'李華',1002:'張三',1003:'小雪',1004:'小張',1005:'小明'} >>> my_dict[1001]#訪問鍵為1001的值 '李華' >>> my_dict[1005]#訪問鍵為1005的值 '小明' >>> my_dict[1006]#訪問鍵為1006的值,此時(shí)字典里沒有1006,故報(bào)錯(cuò)。 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 1006
3. 判斷字典中的值是否存在
在上面我們了解到當(dāng)我們訪問一個(gè)不存在的鍵的時(shí)候會(huì)出現(xiàn)錯(cuò)誤,我們可以采用一種判斷來判別字典中是否存在對應(yīng)的鍵。
判斷是否存再我們使用的是in和not in。
使用in:
>>> my_dict = {1001:'李華',1002:'張三',1003:'小雪',1004:'小張',1005:'小明'} >>> if 1001 in my_dict:#如果my_dict中存在1001這個(gè)鍵就執(zhí)行下面語句 print(my_dict[1001]) >>> 李華
使用not in:
>>> my_dict = {1001:'李華',1002:'張三',1003:'小雪',1004:'小張',1005:'小明'} >>> if 1006 not in my_dict:#如果my_dict中吧存在1006這個(gè)鍵就執(zhí)行下語句 print('不存在1006這個(gè)鍵') >>> 不存在1006這個(gè)鍵
簡單的使用in和not in 可以確保我們在訪問的時(shí)候減少錯(cuò)誤的發(fā)生,需要注意在in和not in操作的時(shí)候,字符串的比較需要區(qū)分大小寫。
4. 添加元素
因?yàn)樽值涫强勺兊?,所以我們可以進(jìn)行增加刪除和修改等操作。對應(yīng)的語法形式分別為:
my_dict[‘newkey’] = ‘newvalue’ >>> my_dict = {1001:'李華',1002:'張三',1003:'小雪',1004:'小張',1005:'小明'} >>> my_dict [1006] = '小李'#增加鍵1006,對應(yīng)值‘小李’ >>> my_dict{1001: '李華', 1002: '張三', 1003: '小雪', 1004: '小張', 1005: '小明', 1006 : '小李'}
增加元素就是直接通過鍵值對進(jìn)行添加。
5. 刪除元素
刪除元素我們還是通過del語句進(jìn)行刪除,刪除的是一整對元素,即包括鍵和值。
語法格式:
del my_list[’key’]
>>> my_dict{1001: '李華', 1002: '張三', 1003: '小雪', 1004: '小張', 1005: '小明', 1006 : '小李'} >>> del my_dict[1001]#刪除鍵為1001的一組元素 >>> del my_dict[1002]#刪除鍵為1002的一組元素 >>> my_dict{1003: '小雪', 1004: '小張', 1005: '小明', 1006: '小李'}
6. 修改元素
修改元素就等于是直接覆蓋了現(xiàn)有元素,它的形式和添加元素的格式類似,
格式為:
my_dict[‘key’] = ‘newvalue’ >>> my_dict {1003: '小雪', 1004: '小張', 1005: '小明', 1006: '小李'} >>> my_dict[1003] = '小天'#把鍵1003的值修改為‘小天’ >>> my_dict {1003: '小天', 1004: '小張', 1005: '小明', 1006: '小李'}
這節(jié)我們先了解一下字典的基礎(chǔ)操作,下一節(jié)來學(xué)習(xí)一些字典的相關(guān)方法。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程