Python基礎之dict和set

2021-08-20 05:36:57 字數 1485 閱讀 3949

使用鍵值對(key-value)儲存,具有極快的查詢速度

把資料放入dict的方法除了初始化指定外,還可以通過key放入

由於乙個key只能對應乙個value,所以,多次對乙個key放入value,後面的值會把前面的值沖掉

如果key不存在,dict就會報錯:

為了避免key不存在的錯誤:

1.通過in判斷key是否存在

2. 通過dict提供的get()方法,如果可以不存在,可以返回none,或者指定的value

刪除key: pop(key)

要刪除乙個key,對應的value也會從dict中刪除

dict內部存放的順序和key放入的順序是沒有關係的。

和list比較,dict有以下幾個特點:

1.查詢和插入的速度極快,不會隨著key的增加而變慢;

2.需要占用大量的記憶體,記憶體浪費多。

而list相反:

1.查詢和插入的時間隨著元素的增加而增加;

2.占用空間小,浪費記憶體很少。

所以,dict是用空間來換取時間的一種方法。

dict的key必須是不可變物件

這是因為dict根據key來計算value的儲存位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的演算法稱為雜湊演算法(hash)。

要保證hash的正確性,作為key的物件就不能變。在python中,字串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key:

set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key

新增元素: add(key)

刪除元素: remove(key)

set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作

set和dict的唯一區別僅在於沒有儲存對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變物件,因為無法判斷兩個可變物件是否相等,也就無法保證set內部「不會有重複元素」。

str是不變物件,而list是可變物件。

對於可變物件,比如list,對list進行操作,list內部的內容是會變化的

對於不變物件來說,呼叫物件自身的任意方法,也不會改變該物件自身的內容。相反,這些方法會建立新的物件並返回,這樣,就保證了不可變物件本身永遠是不可變的

python基礎之dict和set

前一篇寫了列表 list 和元組 tuple 的區別,python還有另外兩個很常用的集合 set 與字典 dict 它們的優勢是高效的查詢和增加,刪除,這些操作的時間複雜度均為o 1 在有些場合,非常適用。什麼是字典 dict 在python中,字典是一系列無序的鍵值對的組合,字典的內容可以增加也...

Python基礎語法之dict和set

dict字典類似於c stl 中的map set類似於stl中的set,無重複集合 usr bin env python3 coding utf 8 字典的表達形式 d print d zhangsan 通過key來修改字典中鍵值對 d zhangsan 99999 print d zhangsan...

Python基礎之字典dict

字典的特性,鍵值對出現 字典的定義 字典的key不可重複,如果key重複的話,預設最後乙個元素新增到字典中,多個元素之間用逗號分割。字典是無序的 定義乙個字典 例 dic 字典的常用方法 fromkeys 引數是乙個可迭代型別,把每乙個迭代物件變成字典的key,value預設為none 可以修改 例...