字典(dict)結構是python中常用的資料結構,筆者結合自己的實際使用經驗,對字典方面的相關知識做個小結,希望能對讀者一些啟發~
常見的字典建立方法就是先建立乙個空字典,然後逐一新增鍵(key)和值(value),比如建立字典person=,可以使用以下**:
輸出結果為:person =
person[
'name']=
'tom'
person[
'age']=
22person[
'city']=
'shanghai'
person[
'id']=
'073569'
(person)
這樣的建立方式簡單原始,**不夠簡潔優雅。我們用zip函式,來簡單快捷地建立這個字典:
輸出結果與原先**一致。attrs =
['name'
,'age'
,'city'
,'id'
]values =
['tom',22
,'shanghai'
,'073569'
]person =
dict
(zip
(attrs, values)
(person)
輸出結果為:attrs =
['name'
,'age'
,'city'
,'id'
]values =
['tom',22
,'shanghai'
,'073569'
]person =
dict
(zip
(attrs, values)
)for key, value in person.items():
('key:%-6s, value:%s'
%(key, value)
)
在實際應用中,有時候我們需要查詢字典中某個值(value)對應的鍵(key),遍歷字典是一種選擇,對調鍵值對是另一種選擇。對調鍵值對的實現**如下:key:name , value:tom
key:age , value:22
key:city , value:shanghai
key:id , value:073569
輸出結果為:attrs =
['name'
,'age'
,'city'
,'id'
]values =
['tom',22
,'shanghai'
,'073569'
]person =
dict
(zip
(attrs, values)
('對調前:'
(person)
person =
('對調後:'
(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():
(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():
(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():
(key, val)
使用sun 2
moon 2
star 4
collections.defaultdict
,**可以優化:
其它預設初始值可以為set,list,dict等。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():
(key, val)
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 值不需要唯一 可以取任何資料...