python的dict set和不可變物件講解

2021-08-26 23:46:07 字數 2003 閱讀 9243

dict: python內建字典    

ps: dict的key必須是不可變物件,在python中,字串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key

把資料放入dict的方法,除了初始化時指定外,還可以通過key放入:  d['adam'] = 67

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

要避免key不存在的錯誤,有兩種辦法:

一是通過in判斷key是否存在

>>> 'thomas' in d

false

二是通過dict提供的get()方法,如果key不存在,可以返回none,或者自己指定的value.(返回none的時候python的互動環境不顯示結果)

>>> d.get('thomas')

>>> d.get('thomas', -1)

-1刪除乙個key,用pop(key)方法,對應的value也會從dict中刪除

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

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

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

而list相反:

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

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

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

set: 一組key的集合,但不儲存value。在set中,沒有重複的key。

建立乙個set,需要提供乙個list作為輸入集合

>>> s = set([1, 2, 3])

>>> s

重複元素在set中自動被過濾

>>> s = set([1, 1, 2, 2, 3, 3])

>>> s

通過add(key)方法可以新增元素到set中,可以重複新增,但不會有效果

通過remove(key)方法可以刪除元素

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

set的原理和dict一樣,同樣不可以放入可變物件

小結:

list 是中括號    classmates = ['michael', 'bob', 'tracy']

tuple 是小括號() classmates = ('michael', 'bob', 'tracy')

dict 是大括號{}     d =

set 是大括號{}    d =

ps:不可變物件

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

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

>>> a = ['c', 'b', 'a']

>>> a.sort()

>>> a

['a', 'b', 'c']

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

>>> a = 'abc'                            >>> a = 'abc'

>>> a.replace('a', 'a')               >>> b = a.replace('a', 'a')

'abc'                                         >>> b

>>> a                                       'abc'

'abc'                                         >>> a

'abc'

python中的集合dict set

dict型別 我們已經知道,list 和 tuple 可以用來表示順序集合,例如,班裡同學的名字以及他們對應的分數 mike aki jack 姓名 98,86,78 對應的分數但是如果要想通過名字找到對應的分數,使用list就不一定方便。如果利用dict就能方便許多,在dict中名字作為key,分...

Python內建字典 dict ,set

dict and set dict 鍵 值 重複新增 set 鍵 key不能重複 對於不變物件來說,呼叫物件自身的任意方法,也不會改變該物件自身的內容。相反,這些方法會建立新的物件並返回,這樣,就保證了不可變物件本身永遠是不可變 python內建了字典 dict的支援,dict全稱dictionar...

python 學習筆記(六) dict,set

dict的第乙個特點是查詢速度快,無論dict有10個元素還是10萬個元素,查詢速度都一樣。而list的查詢速度隨著元素增加而逐漸下降。不過dict的查詢速度快不是沒有代價的,dict的缺點是占用記憶體大,還會浪費很多內容,list正好相反,占用記憶體小,但是查詢速度慢。由於dict是按 key 查...