判斷集合相等 字典和集合

2021-10-14 19:25:28 字數 1462 閱讀 1724

字典是一系列無序元素(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已經存在...