這篇文章帶給大家的內容是關於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'}
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字典的操作總結(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!