官术网_书友最值得收藏!

2.5.2 字典的基本操作與方法

1.訪問字典

列表和元組是通過下標來訪問元素的,而字典不同,它通過鍵來訪問對應的值。因為字典中的元素是無序的,每個元素的位置都不固定,所以字典也不能像列表和元組那樣,采用切片的方式一次性訪問多個元素。

Python訪問字典元素的具體格式為:

其中,dictname表示字典變量的名字,key表示鍵名。注意,鍵必須是存在的,否則會報異常。

【例2-46】 通過鍵訪問字典。

運算結果:

除了上面這種方式外,Python也推薦使用dict類型提供的get()方法來獲取指定鍵對應的值。當指定的鍵不存在時,get()方法不會拋出異常。

get()方法的語法格式為:

其中,dictname表示字典變量的名字;key表示指定的鍵;default用于指定要查詢的鍵不存在時,此方法返回的默認值,如果不手動指定,會返回None。

【例2-47】 通過get()方法訪問字典。

運算結果:

本例中可以看到,當鍵不存在時,get()返回空值None,如果想明確地提示用戶該鍵不存在,那么可以手動設置get()的第二個參數。

2.刪除字典

和刪除列表、元組一樣,手動刪除字典也可以使用del關鍵字。

【例2-48】 通過get()方法訪問字典。

運算結果:

3.添加鍵值對

為字典添加新的鍵值對很簡單,直接給不存在的key賦值即可,具體語法格式如下:

其中,dictname表示字典名稱,key表示新的鍵,value表示新的值,只要是Python支持的數據類型都可以。

【例2-49】 添加字典鍵值對。

運算結果:

4.修改鍵值對

字典中鍵(key)的名字不能修改,只能修改值(value)。字典中各元素的鍵必須是唯一的,因此,如果新添加元素的鍵與已存在元素的鍵相同,那么鍵所對應的值就會被新的值替換掉,以此達到修改元素值的目的。

【例2-50】 添加字典鍵值對。

運算結果:

例中可以看到,字典中沒有再添加一個{'第三名': 8.13}鍵值對,而是對原有鍵值對{'第三名':7.65}中的value做了修改。

5.刪除鍵值對

如果要刪除字典中的鍵值對,還可以使用del語句。

【例2-51】 使用del語句刪除鍵值對。

運算結果:

6.判斷字典中是否存在指定鍵值對

如果要判斷字典中是否存在指定鍵值對,首先應判斷字典中是否有對應的鍵。判斷字典是否包含指定鍵值對的鍵,可以使用in或not in運算符。

需要指出的是,對于dict而言,in或not in運算符都是基于key來判斷的。

通過in(或not in)運算符,可以很輕易地判斷出現有字典中是否包含某個鍵,如果存在,由于通過鍵可以很輕易獲取對應的值,因此很容易就能判斷出字典中是否有指定的鍵值對。

【例2-52】 使用del語句刪除鍵值對。

運算結果:

7.keys()、values()和items()方法

將這3個方法放在一起介紹,是因為它們都用來獲取字典中的特定數據:

● keys()方法用于返回字典中的所有鍵(key);

● values()方法用于返回字典中所有鍵對應的值(value);

● items()方法用于返回字典中所有的鍵值對(key-value)。

2-8 獲取字典中的特定數據

【例2-53】 獲取字典中的鍵、值及鍵值對數據。

運算結果:

從例中可以發現,keys()、values()和items()返回值的類型分別為dict_keys、dict_values和dict_items,并不是常見的列表或者元組類型。如果需要列表類型等類型,則使用list()函數將它們返回的數據轉換成列表或使用for in循環遍歷它們的返回值。

【例2-54】 獲取字典中的鍵、值及鍵值對數據后返回列表類型。

運算結果:

8.copy()方法

copy()方法是返回一個字典的副本,即返回一個具有相同鍵值對的新字典。

【例2-55】 字典的copy()方法應用。

運算結果:

從運行結果不難看出,對a增加新鍵值對,b不變;而修改a的某鍵值對中列表內的元素,b也會相應改變。

9.update()方法

update()方法可以使用一個字典所包含的鍵值對來更新己有的字典。在執行update()方法時,如果被更新的字典中已包含對應的鍵值對,那么原value會被覆蓋;如果被更新的字典中不包含對應的鍵值對,則該鍵值對被添加進去。

【例2-56】 字典的update()方法應用。

運算結果:

從運行結果可以看出,由于被更新的字典中已包含key為“No.2”的鍵值對,因此更新時該鍵值對的value將被改寫;而被更新的字典中不包含key為“No.5”的鍵值對,所以更新時會為原字典增加一個新的鍵值對。

10.pop()和popitem()方法

pop()和popitem()都用來刪除字典中的鍵值對,不同的是,pop()用來刪除指定的鍵值對,而popitem()用來隨機刪除一個鍵值對,它們的語法格式如下:

其中,dictname表示字典名稱,key表示鍵。

【例2-57】 指定刪除或隨機刪除。

運算結果:

11.setdefault()方法

setdefault()方法用來返回某個key對應的value,其語法格式如下:

說明,dictname表示字典名稱,key表示鍵,defaultvalue表示默認值(可以不寫,不寫則為None)。

當指定的key不存在時,setdefault()會先為這個不存在的key設置一個默認的defaultvalue,然后再返回defaultvalue。也就是說,setdefault()方法總能返回指定key對應的value。

1)如果該key存在,那么直接返回該key對應的value;

2)如果該key不存在,那么先為該key設置默認的defaultvalue,然后再返回該key對應的defaultvalue。

【例2-58】 指定刪除或隨機刪除。

運算結果:

從例中可以看出,key為“'石化'”存在時,直接返回該key對應的value,即0.7,而不會更改為setdefault()方法中的0.68。

主站蜘蛛池模板: 上杭县| 正安县| 伊宁县| 河曲县| 即墨市| 达日县| 湄潭县| 易门县| 济源市| 酉阳| 衡阳县| 乳源| 乌恰县| 濮阳市| 赤壁市| 甘肃省| 连江县| 聂拉木县| 墨脱县| 山西省| 武冈市| 南康市| 建始县| 都匀市| 天门市| 大余县| 寿光市| 仁布县| 论坛| 郸城县| 大兴区| 铜鼓县| 县级市| 宝兴县| 教育| 合肥市| 高要市| 江达县| 容城县| 门头沟区| 新津县|