字典是一系列無序元素(key和value)的組成的元素的集合
集合是一系列無序的、唯一的元素的組合
字典訪問:get(key, default)
集合不支援索引表,因為集合本質上是乙個雜湊表
value in set/dict
d =
d_sorted_by_key = sorted(d.items(), key=lambda x: x[0]) # 根據字典鍵的公升序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[1]) # 根據字典值的公升序排序
d_sorted_by_key
[('a', 2), ('b', 1), ('c', 10)]
d_sorted_by_value
[('b', 1), ('a', 2), ('c', 10)]
為了保證其高效性,字典和集合內的雜湊表,通常會保證其至少留有 1/3 的剩餘空間。隨著元素的不停插入,當剩餘空間小於 1/3 時,python 會重新獲取更大的記憶體空間,擴充雜湊表。不過,這種情況下,表內所有的元素位置都會被重新排放。
python會暫時對該位置的元素,賦乙個特殊的值,等重新調整雜湊表的大小時,再刪除
根據雜湊值,找到所處位置,比較雜湊表位置中元素的雜湊值和鍵,判斷與需查詢元素是否相等,相等,則直接返回,不等,則繼續找,直到找到空位或丟擲異常為止。
若都相等,則該元素已經存在,如果值不同,則更新值。
若兩者中有乙個不相等,通常稱為雜湊衝突(hash collision),意思是兩個元素的鍵不相等,但是雜湊值相等。這種情況下,python 便會繼續尋找表中空餘的位置,直到找到位置為止。
而如果此位置已被占用,python 便會比較兩個元素的雜湊值和鍵是否相等
每次向字典或集合插入乙個元素時,python 會首先計算鍵的雜湊值(hash(key)),再和 mask = pydicminsize - 1 做與操作,計算這個元素應該插入雜湊表的位置 index = hash(key) & mask。如果雜湊表中此位置是空的,那麼這個元素就會被插入其中。
為了提高儲存空間的利用率,現在的雜湊表除了字典本身,會把索引和雜湊值、鍵、值單獨分開
字典、集合內部的資料結構密不可分,不同於其他資料結構,字典和集合的內部結構都是一張雜湊表
字典:表中儲存了: 雜湊值(hash)、鍵、值
集合:只儲存了單一元素
集合是告訴優化的雜湊表,裡面的元素不可重複,新增和查詢操作:o(1)
字典查詢資料:o(1) 字典內部組成是一張雜湊表,直接通過鍵的雜湊值,找到記憶體中鍵所對應的值
集合的 pop() 操作是刪除集合中最後乙個元素,可是集合本身是無序的,你無法知道會刪除哪個元素,因此這個操作得謹慎使用
字典和集合
字典 dict 字典 dict是一種無序的可變容器,序列的索引對它失效,它的索引是自定義的 形式 d d d dict a 1,b 2 d dict name libai age 30 d dict.fromkeys 迭代物件 將乙個迭代物件的每個元素作為鍵,值預設全部為none 字典方法 例 d ...
集合和字典
二 字典 dictionary 定義 1.建立格式 par 或者set value 向集合中新增元素 s.add a a 如果a已經存在,不進行任何操作 或者s.update a a可以是列表,元組,字典等。a 可以是多個,用逗號隔開。2.移除元素 s.remove a 將a從集合中移除出去,如果元...
字典和集合
資料以key value來儲存 1.key必須唯一,且必須是不可變的 2.訪問元素 dict key 返回key對應的value 當key不存在時,報錯 dict.get key 返回key對應的value 當key不存在時,返回none 3.新增元素 dict key value 若key已經存在...