首頁 > 後端開發 > Python教學 > Python字典的操作總結(附範例)

Python字典的操作總結(附範例)

不言
發布: 2018-10-20 14:59:20
轉載
2070 人瀏覽過

這篇文章帶給大家的內容是關於Python字典的操作總結(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

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

建立字典

常見的字典建立方法就是先建立一個空字典,然後逐一加入鍵(key)和值(value),例如建立字典person={'name':'Tome', 'age' :22, 'city':'Shanghai, 'ID': '073569'},可以使用以下程式碼:

person = {}
person['name'] = 'Tom'
person['age'] = 22
person['city'] = 'Shanghai'
person['ID'] = '073569'
print(person)
登入後複製

輸出結果為:

{'name': 'Tom', 'age': 22, 'city': 'Shanghai', 'ID': '073569'}
登入後複製

這樣的建立方式簡單原始,程式碼不夠簡潔優雅。我們用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 = {v:k for k,v in person.items()}
print('对调后:')
print(Person)
登入後複製

輸出結果為:

对调前:
{'name': 'Tom', 'age': 22, 'city': 'Shanghai', 'ID': '073569'}
对调后:
{'Tom': 'name', 22: 'age', 'Shanghai': 'city', '073569': 'ID'}
登入後複製

#有序字典OrderedDict

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

#  #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字典的操作總結(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板