字典(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 值不需要唯一 可以取任何資料...