第3 5節 豐富的Python字典操作

2021-09-19 04:18:54 字數 3883 閱讀 3588

二、 操作方法

1、 建立字典的方法

(1) 建立空字典的兩種方法:

變數= dict()

變數= {}

(2) 從鍵-值對映對建立字典,方法:

變數=如:d=

(3) 從以元組作為元素的列表建立字典,元組包含兩個元素,第乙個元素是鍵,第二個是該鍵對應的字典的值,這樣列表中的每個元組對就構成了字典中的鍵-值對,舉例如下:

d = dict([(『name』, 『zhangsan』), (『age』, 42)]) # 結果:

(4) 從「鍵=值」的方式建立字典,這裡的鍵與上面2種方法的鍵稍微有些不同,這裡的鍵的可以看做變數,其組成規則與變數相同,真正儲存時鍵變成了包含鍵名的字串,而前面2種方法的鍵只要是任何不可修改的資料型別。

d = dict(name=『gumby』, age=42)#注意,這種方法是正確的,其結果就是

d = dict(『name』=『gumby』, 『age』=42)#這種呼叫方法不正確,會報表示式錯誤的錯誤

(5) 從字典建立字典,語法:

變數=dict(dict物件)

舉例:d1 = dict(d)

注意,上述語句是從字典d建立字典物件d1,其鍵值對與d完全相同,但這是兩個不同的物件,等同於淺拷貝

d[2][1]=100 #執行後 d=,d1的值與其相同

d1 is d #結果為false

從上面幾行**可以看出,dict如果不是鍵值對方式建立,而是直接以字串、列表、元組作為引數,大部分情況都報錯,但是2種情況會例外:

a) 上面講的從以元組作為元素的列表建立字典,如d = dict([(『name』, 『zhangsan』), (『age』, 42)]);

b) 從以2個長度的字串作為元素的元組或列表建立字典,如dict([『na』, 『zh』])、dict((『na』, 『zh』)),這種方式其實沒有多少意義。

2、 字典與列表相似的操作方法。

(1) len(d)返回字典d包含的項(鍵?值對)數;

(2) d[key]返回與鍵key相關聯的值,注意這裡沒法用索引;

(3) d[key] = v將值v關聯到鍵key;

(4) del d[key]刪除鍵為key的項;

(5) key in d檢查字典d是否包含鍵為key的項;

(6) clear方法刪除所有字典項;

(7) copy方法淺拷貝字典的內容給另乙個字典;

(8) deepcopy深度拷貝

深度拷貝是指針對淺拷貝來說,深度拷貝複製物件及其下所有層級的資料每個層級都是複製乙份,每個層級的指向物件相對複製物件都會發生變更。這樣複製後複製物件及其下的元素和原物件的變更都不會相互影響。

使用深度拷貝的方法很簡單,首先需要從copy模組import深度複製方法。然後直接呼叫該方法複製物件。

樣例從d1深度複製到d2的**如下:

import copy

d2 = copy.deepcopy(d1)

也可以這樣:

from copy import deepcopy

d2 = deepcopy(d1)

4、 字典的其他操作方法

(1) 字典可以通過get方法訪問鍵對應值,呼叫時鍵作為引數,返回鍵對應的值,如果字典沒有找到對應鍵,則預設返回none,也可以指定預設返回值。例如d.get(『grade』,』空』) 當找不到grade鍵時,返回』空』這個字串;

(2) items、keys、values方法:分別返回dict_items類的字典項資料、dict_keys類的字典鍵資料和dict_values類的字典值資料,如:

*d= #定義字典

i,k,v=d.items(),d.keys(),d.values() #將項、鍵、值查詢的返回值分別用i、k、v指向

print(type(i),i,sep=』,i=』)#列印項的型別及值,輸出:

,i=dict_items([(『name』, 『張三』), (『grade』, 『3年級』)])

print(type(k),k,sep=』,k=』)#列印鍵的型別及值,輸出:

,k=dict_keys([『name』, 『grade』])

print(type(v),v,sep=',v=')#列印值的型別及值,輸出:

,v=dict_values(['張三', '3年級'])

for ii in i:print(type(ii),ii,sep=': ') #輸出項的每個元素及型別:

: ('name', '張三')

: ('grade', '3年級')

for kk in k:print(type(kk),kk,sep=': ') #輸出鍵的每個元素及型別:

: name

: grade

for vv in v:print(type(vv),vv,sep=': ')#輸出值的每個元素及型別

: 張三

: 3年級

l=list(i) #項轉換成列表[('name', '張三'), ('grade', '3年級')],鍵、值也可以

d1 = dict(i)#項轉換成 ,鍵、值不可以

d['class']='9班' #字典增加乙個元素

i,k,v #輸出i、k、v的值,發現都對應隨字典元素的增加而增加了內容

(dict_items([('name', '張三'), ('grade', '3年級'), ('class', '9班')]), dict_keys(['name', 'grade', 'class']), dict_values(['張三', '3年級', '9班']))*

dict_items、dict_keys和dict_values類屬於一種名為字典檢視的特殊型別,其資料都是字典本身的資料,這些呼叫相關方法後返回的檢視與字典關聯,當字典變化時這些前面用變數指向的返回值也會跟隨變化。這三種型別都支援用for…in的方法訪問其中的元素,dict_items的每個元素是個元組,可以通過list、dict、tuple方法轉換為列表、字典和元組,而dict_keys和dict_values需要根據具體資料判斷其每個元素的型別,能轉換為列表和元組,但不能轉換為字典。

(3) pop:方法pop可用於返回與指定鍵對應的值,並將該鍵-值對從字典中刪除。例如:

d=d.pop(100) #返回『a』,d=

(4) popitem:方法popitem隨機地彈出乙個字典項,並從字典中刪除該項

d.popitem() #返回(『class』, 『9班』),意味著該鍵值對從字典中刪除,字典變為

(5) setdefault :方法setdefault有2個引數,第乙個是鍵,第二個是乙個預設值,當字典中指定鍵存在時返回對應的值,否則在字典中新增該鍵,並以預設值為該鍵對應的值,相當於增加了乙個字典項。如:

d.setdefault(『class』, 『9班』) #d=

(6) update方法update使用乙個字典中的項來更新另乙個字典。對於通過引數提供的字典,將其項新增到當前字典中。如果當前字典包含鍵相同的項,就替換它。如執行如下三條指令:

d1 =

d2 =

d2.update(d1)

執行後d2=

第35節 HtmlTestRunner測試報告

htmltestrunner 是 python 標準庫的 unittest 單元測試框架的乙個擴充套件。它生成易於使用的 html 測試報告。使用前提 2.htmltestrunner.py 本是乙個.py 檔案,將它放到 python 安裝目錄下即可呼叫。舉例 說明 呼叫 htmltestrunn...

python 第6章節 字典

1.在pythonkhaki,字典是一系列鍵值對,每個分鍵都與乙個值相關聯,你可以使用鍵來訪問與之相關的值。與鍵相關聯的值可以是數字 字串或者字典。字典名 2.鍵和值之間用冒號分隔,而鍵和鍵之間用逗號分隔。3.訪問字典 字典名 鍵號 4.新增鍵值對 字典是一種動態結構,可隨時在其中新增鍵值對,要新增...

第11課 Python字典

一.字典概述 1.字典的誕生 有時需要儲存具有對應關係的資料對,如使用者名稱和密碼,每個使用者名稱對應乙個密碼,這種資料用列表儲存比較麻煩,於是誕生了字典,其內部是很多值的無序集合,可以把乙個特定資料當做索引值進行索引。2.字典的格式 a 花括號 字典由左花括號開始,右花括號結束 鍵 字典中在冒號 ...