Python字典小結

2021-09-13 02:49:11 字數 3290 閱讀 5453

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