Python學習筆記 - dict和set

來源:互聯網
上載者:User

標籤:python   dict   set   

dict

#!/usr/bin/env python3# -*- coding: utf-8 -*-#dict>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95>>> d['Adam'] = 67>>> d['Adam']67>>> d['Jack'] = 90>>> d['Jack']90>>> d['Jack'] = 88>>> d['Jack']88>>> d['Thomas']Traceback (most recent call last):  File "<stdin>", line 1, in <module>KeyError: 'Thomas'>>> 'Thomas' in dFalse>>> d.get('Thomas') # 這裡返回None,命令互動行不會顯示>>> d.get('Thomas', -1) #返回子集指定的value-1>>> d.pop('Bob') #pop(key)方法,對應的value都會刪除75>>> d{'Jack': 88, 'Tracy': 85, 'Michael': 95, 'Adam': 67}

dict內部存放的順序和key放入的順序是沒有關係的
和list相比較,dict有以下幾個特點:
1.尋找和插入的速度極快,不會順著key的增加而增加
2.需要佔用大量的記憶體,記憶體浪費多
而list相反:
1.尋找和插入的時間隨著元素的增加而增加;
2.佔用空間小,浪費記憶體很少。


所以,dict是用空間來換取時間的一種方法。
dict可以用在需要高速尋找的很多地方。
需要牢記的第一條就是dict的key必須是不可變對象。
這是因為dict根據key來計算value的儲存位置,如果每次計算
相同的key得出結果不同,那dict內部就完全混亂了。這個通過key
計算位置的演算法就是雜湊演算法(Hash)。
要保證hash的正確性,作為key的對象就不能變。
在Python中,字串、整數等都是不可變的。
而list是可變的,就不能作為key。

>>> key = [1, 2, 3]>>> d[key] = 'a list'Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: unhashable type: 'list'

set

#!/usr/bin/env python3# -*- coding: utf-8 -*-#建立set需要提供一個list作為輸入集合>>> s = set([1, 2, 3])>>> s{1, 2, 3}>>> s = set([1, 1, 2, 2, 3, 3]) #重複元素在set中自動被過濾>>> s{1, 2, 3}>>> s.add(4) #添加元素>>> s{1, 2, 3, 4}>>> s.add(4) #添加重複元素,不會有效果>>> s{1, 2, 3, 4}>>> s.remove(4) #刪除元素>>> s{1, 2, 3}>>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s1 & s2 #交集{2, 3}>>> s1 | s2 #並集{1, 2, 3, 4}#再談不可變對象>>> a = ['c', 'b', 'a']>>> a.sort()>>> a['a', 'b', 'c']>>> a = 'abc'>>> b = a.replace('a', 'A') #這裡雖然對a進行操作#但是實際是產生了一個新字串,並讓b指向新字串>>> b'Abc'>>> a'abc'
對於不可變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容,相反,這些方法會建立新的對象並返回,這樣,就保證了不可變本身永遠是不可變的。






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.