python3之字典(dict)和集合(set)

Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱爲map,使用鍵-值(key-value)存儲,具有極快的查找速度。

>>> d = {'lxd':95, 'gsq':99, 'dyk':66, 'nml':88}
>>> d['lxd']
95

把數據放入dict的方法,除了初始化時指定外,還可以通過key放入:

>>> d['lwb'] = 67
>>> d['lwb']
67

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

>>> d['gsq'] = 99
>>> d['gsq']
99
>>> d['gsq'] = 100
>>> d['gsq']
100

要避免key不存在的錯誤,有兩種辦法,一是通過in判斷key是否存在:

>>> 'Thomas' in d
False

二是通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

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

注意:返回None的時候Python的交互式命令行不顯示結果。

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

>>> d.pop('lwb')
67
>>> d
{'gsq': 100, 'dyk': 66, 'nml': 88, 'lxd': 95}

或者:

>>> del d['nml']
>>> d
{'gsq': 100, 'dyk': 66, 'lxd': 95}

和list比較,dict有以下幾個特點:
1. 查找和插入的速度極快,不會隨着key的增加而增加;
2. 需要佔用大量的內存,內存浪費多。
而list相反:
1. 查找和插入的時間隨着元素的增加而增加;
2. 佔用空間小,浪費內存很少。

所以,dict是用空間來換取時間的一種方法。需要牢記的第一條就是dict的key必須是不可變對象

set
set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。
要創建一個set,需要提供一個list作爲輸入集合:

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

重複元素在set中自動被過濾,顯示的順序也不表示set是有序的。
add(key)方法可以添加元素到set中,可以重複添加,但不會有效果:

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

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

>>> s.remove(4)
>>> s
{1, 2, 3}

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

>>> s1 = set([1,2,3])
>>> s2 = set([2,3,4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
>>> s1 ^ s2
{1, 4}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章