python 最有用的資料型別之一: 『字典』
字典是一種可以儲存key-value鍵值對的資料型別,其中關鍵碼key可用於查詢關聯的資料值data,這種鍵值關聯的方法稱為"對映map"
adt map的結構時鍵-值關聯的無序集合:
關鍵碼具有唯一性
通過關鍵碼可以唯一確定乙個資料值
adt map定義的操作如下:
map():建立乙個空對映,返回空對映物件;
put(key,val): 將key-val關聯對加入對映中,如果key已存在,將val替換舊關聯值;
get(key):給定key,返回關聯的資料值,如不存在,則返回none
del: 通過del map[key]的語句形式刪除key-val關聯
len():返回對映中key-val關聯的數目;
in: 通過 key in map的語句形式,返回key是否存在於關聯中,布林值
使用字典的優勢在於,給定關鍵碼key,能夠很快得到關聯的資料值data,為了達到快速查詢的目標,需要乙個支援高效查詢的adt實現,可以採用列表資料結構加順序查詢或者二分查詢,當然,更為合適的是使用雜湊表來實現,這樣查詢可以達到最快o(1)的效能,
下面,我們用乙個hashtable類來實現adt map,該類包含了兩個列表作為成員, 其中乙個slot列表用於儲存key,另乙個平行的data列表用於儲存資料項
在slot列表查詢到乙個key的位置以後,在data列表對應相同位置的資料項即為關聯資料
h = hashtable()h[
54]="cat"
h[26]=
"dog"
h[93]=
"lion"
h[17]=
"tiger"
h[77]=
"bird"
h[31]=
"cow"
h[44]=
"goat"
h[55]=
"pig"
h[20]=
"chicken"
print
(h.slots)
print
(h.data)
print
(h[20])
print
(h[17])
h[20]=
'duck'
print
(h[20])
print
(h[99
])
儲存key的列表就作為雜湊表來處理,這樣可以迅速查詢到指定的key
注意雜湊表的大小,雖然可以是任意數,但考慮到要讓衝突解決演算法能有效工作,就應該選擇素數
抽象資料型別 「對映」 ADT Map
字典,通過儲存key data鍵值對的資料型別。adt map的結構是鍵值關聯的無序集合。其中關鍵碼key具有唯一性,通過關鍵碼可以唯一確定乙個資料值。通過雜湊表構造map。class hashtable def init self self.size 11 可以任意設定,但為了便於求解,應該設為素...
抽象資料型別
本篇文章簡單的講解下表 棧 佇列。首先先了解一下什麼是抽象資料型別。它是這麼定義的 抽象資料型別 abstract data type,即adt 是帶有一組操作的一些物件的集合。那麼adt怎麼理解呢?首先你只需要記住表 集合 圖以及與他們各自的操作一起形成的物件都可以被看做抽象資料型別.這就跟整型 ...
抽象資料型別 表
資料結構與演算法分析.c 實現 總結 抽象資料型別 abstract data type,首先顧名思義,她是一種資料型別,就像整數 字元,類似於加減乘除,他有自己的操作,例如 並和查詢 並沒有什麼法則規定一定要有什麼操作,具體的看設計要求 每種資料型別的實現方式也是不同的,主要有 陣列實現和鍊錶實現...