字典(dict)結構是python中常用的資料結構,筆者結合自己的實際使用經驗,對字典方面的相關知識做個小結,希望能對讀者一些啟發~
常見的字典建立方法就是先建立乙個空字典,然後逐一新增鍵(key)和值(value),比如建立字典person=,可以使用以下**:
person = {}
person['name'] = 'tom'
person['age'] = 22
person['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 值不需要唯一 可以取任何資料...