Python字典小結

2021-08-29 10:24:22 字數 3850 閱讀 2670

字典(dict)結構是python中常用的資料結構,筆者結合自己的實際使用經驗,對字典方面的相關知識做個小結,希望能對讀者一些啟發~

常見的字典建立方法就是先建立乙個空字典,然後逐一新增鍵(key)和值(value),比如建立字典person=,可以使用以下**:

person =

person[

'name']=

'tom'

person[

'age']=

22person[

'city']=

'shanghai'

person[

'id']=

'073569'

print

(person)

輸出結果為:

這樣的建立方式簡單原始,**不夠簡潔優雅。我們用zip函式,來簡單快捷地建立這個字典:

attrs =

['name'

,'age'

,'city'

,'id'

]values =

['tom',22

,'shanghai'

,'073569'

]person =

dict

(zip

(attrs, values)

)print

(person)

輸出結果與原先**一致。

attrs =

['name'

,'age'

,'city'

,'id'

]values =

['tom',22

,'shanghai'

,'073569'

]person =

dict

(zip

(attrs, values)

)for key, value in person.items():

print

('key:%-6s, value:%s'

%(key, value)

)

輸出結果為:

key:name  , value:tom

key:age , value:22

key:city , value:shanghai

key:id , value:073569

在實際應用中,有時候我們需要查詢字典中某個值(value)對應的鍵(key),遍歷字典是一種選擇,對調鍵值對是另一種選擇。對調鍵值對的實現**如下:

attrs =

['name'

,'age'

,'city'

,'id'

]values =

['tom',22

,'shanghai'

,'073569'

]person =

dict

(zip

(attrs, values)

)print

('對調前:'

)print

(person)

person =

print

('對調後:'

)print

(person)

輸出結果為:

對調前:

對調後:

python中的字典是無序的,其取出來的鍵是無序的,因為它是按照hash來儲存的。有時候,我們需要字典的條目(items)或鍵(keys)是有序儲存的,這時候可以使用collections模組中的ordereddict,它是一種有序的字典結構。

示例**如下(python版本為3.5.2):

from collections import ordereddict

d =d[

'tom']=

'a'd[

'jack']=

'b'd[

'leo']=

'c'd[

'alex']=

'd'print

('無序字典(dict):'

)for k,v in d.items():

print

(k,v)

d1 = ordereddict(

)d1[

'tom']=

'a'd1[

'jack']=

'b'd1[

'leo']=

'c'd1[

'alex']=

'd'print

('\n有序字典(ordereddict):'

)for k,v in d1.items():

print

(k,v)

輸出的結果為:

無序字典(dict):

leo c

jack b

tom a

alex d

有序字典(ordereddict):

tom a

jack b

leo c

alex d

collections.defaultdict是python內建dict類的乙個子類,第乙個引數為default_factory屬性提供初始值,預設為none。它覆蓋乙個方法並新增乙個可寫例項變數。它的其他功能與dict相同,但會為乙個不存在的鍵提供預設值,從而避免keyerror異常。

我們以統計列表中單詞的詞頻為例,展示collections.defaultdict的優勢。

一般情形下,我們統計列表中的單詞詞頻**為:

words =

['sun'

,'moon'

,'star'

,'star'

,\ 'star'

,'moon'

,'sun'

,'star'

]freq_dict =

for word in words:

if word not

in freq_dict.keys():

freq_dict[word]=1

else

: freq_dict[word]+=1

for key, val in freq_dict.items():

print

(key, val)

輸出結果如下:

sun 2

moon 2

star 4

使用collections.defaultdict,**可以優化:

from collections import defaultdict

words =

['sun'

,'moon'

,'star'

,'star'

,\ 'star'

,'moon'

,'sun'

,'star'

]freq_dict = defaultdict(

int)

for word in words:

freq_dict[word]+=1

for key, val in freq_dict.items():

print

(key, val)

其它預設初始值可以為set,list,dict等。

Python字典小結

字典 dict 結構是python中常用的資料結構,筆者結合自己的實際使用經驗,對字典方面的相關知識做個小結,希望能對讀者一些啟發 常見的字典建立方法就是先建立乙個空字典,然後逐一新增鍵 key 和值 value 比如建立字典person 可以使用以下 person person name tom ...

Python字典小結

字典 dict 結構是python中常用的資料結構,筆者結合自己的實際使用經驗,對字典方面的相關知識做個小結,希望能對讀者一些啟發 常見的字典建立方法就是先建立乙個空字典,然後逐一新增鍵 key 和值 value 比如建立字典person 可以使用以下 person person name tom ...

python 字典資料小結(一)

1 字典資料 1 字典的每個鍵值 key value 對用冒號 分割,2 每個鍵值對之間用逗號 分割。3 整個字典包括在花括號 中 格式如下所示 dic 2 特性 1 鍵是唯一的 如果重複最後的乙個鍵值對會替換前面的。所以可以用數字,字串或元組充當,所以用列表就不行 2 值不需要唯一 可以取任何資料...