Python自學筆記之dict和set

來源:互聯網
上載者:User

標籤:

dict

dict全稱dictionary(只為複習一下不常用單詞),也就是其他語言中的map,使用索引值對儲存資料,尋找速度極快。

使用方法:d = {‘key1‘:value1, ‘key2‘:value2}

尋找key對應值的方法:d[‘key1‘]  對應輸出即為value1

如未初始化,添加值的方法:d[‘key1‘] = value1_1  注意,一個key只能對應一個值,後面放入的值會把前面的值衝掉

如果key不存在,dict會報錯。通常有兩種方法可以用來檢查key是否存在。

  第一種,in的使用方法:‘key1‘ in d  返回結果為true或false;

  第二種,dict提供的get方法,其使用方法:d.get(‘key1‘)  如果key不存在,返回none,也可以自訂傳回值,如 d.get(‘key1‘, -1)  則key不存在時返回-1。 注意,返回none的時候Python的互動命令列不顯示結果。

刪除key的方法:d.pop(‘key1‘)  當然,對應的value也會一併刪除,而運行此方法顯示的值為value1

務必注意:dict內部存放順序和key放入的順序無關

和list相比,dict有以下特點:

  1. 尋找速度快,時間複雜度不會隨dict增大而增大

  2. 需要佔用大量記憶體,記憶體浪費多

另外需要牢記的是,key必須是不可變對象。因為dict根據key來計算value的儲存位置,如果相同的key每次計算時都得出不同的value,那dict內部就會完全混亂。通過key計算位置的方法是雜湊演算法,要保證hash的正確性,作為key的對象就不能變。Python中字串和整數都是不可變對象,可以放心作為key,而list是可變的所以不能作為key。

set

set和dict類似,也是一組key的集合,只不過不儲存值。由於key不能重複,所以set中沒有重複的元素,定義時重複元素會被自動過濾。

要建立一個set,需要一個list做輸入,建立方法:s = set([key1, key2, key3])  此時s的顯示結果為set([key1, key2, key3]),注意此結果中的[]不再是一個list,而是告訴你set中的元素為key1,key2,key3

添加元素的方法:s.add(keyx)

刪除元素的方法:s.remove(keyx)

set可以看成數學上無序無重複元素的集合,兩個set可以做數學意義上的交集和並集的操作,如: s1和s2兩個set做交集為 s1 & s2; 做並集為 s1 | s2

set和dict原理相同,也不能放入可變對象,因為不能判斷兩個可變對象是否相等也就不能保證set中無重複元素。

不可變對象

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

例如:對不可變對象字串進行如下操作,

a = ‘abc‘

a.replace(‘a‘, ‘A‘)

此時a.replace(‘a‘, ‘A‘)顯示的結果確實是‘Abc‘,而a顯示的結果仍舊是‘abc‘

而若對可變對象list進行如下操作,

a = [‘b‘, ‘c‘, ‘a‘]

a.sort()

則不論是a.sort()還是a,顯示的結果都是 [‘a‘, ‘b‘. ‘c‘],list內部的內容已經改變了。

注意: tuple雖然是不可變對象,但由於其內部可以存放list,所以也不適合做key值。

Python自學筆記之dict和set

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.