標籤:list strong 字元 ace ash 不能 刪除 雜湊演算法 rac
dict(字典)
Python內建了字典:dict的支援,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)儲存,具有極快的尋找速度。
和list比較,dict有以下幾個特點:
- 尋找和插入的速度極快,不會隨著key的增加而變慢;
- 需要佔用大量的記憶體,記憶體浪費多。
而list相反:
- 尋找和插入的時間隨著元素的增加而增加;
- 佔用空間小,浪費記憶體很少。
所以,dict是用空間來換取時間的一種方法。
dict可以用在需要高速尋找的很多地方,在Python代碼中幾乎無處不在,正確使用dict非常重要,需要牢記的第一條就是dict的key必須是不可變對象。
這是因為dict根據key來計算value的儲存位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的演算法稱為雜湊演算法(Hash)。
要保證hash的正確性,作為key的對象就不能變。在Python中,字串、整數等都是不可變的,因此,可以放心地作為key。而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‘
‘‘‘dictionary:包含<key, value> 基本操作‘‘‘my_dict = {‘name‘:‘kumata‘,‘age‘:20,‘location‘:‘zhuhai‘}#輸出索引值print(my_dict[‘name‘]) #增加鍵對值my_dict[‘sex‘] = ‘man‘print(my_dict)#修改字典中的值my_dict[‘age‘] = 21print(my_dict)#刪除索引值對del my_dict[‘sex‘]print(my_dict)#遍曆字典for key,value in my_dict.items(): print(key ,‘:‘,value)#清除字典my_dict.clear()print(my_dict)
set(集合)
set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。
‘‘‘set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。要建立一個set,需要提供一個list作為輸入集合:‘‘‘s1 = set([1,2,3,4,5])print(s1) #{1, 2, 3, 4, 5}#重複元素在set中自動被過濾s2 = set([1,1,2,3,3,4])print(s2) #{1, 2, 3, 4}#add(key)添加元素s1.add(6)print(s1) #{1, 2, 3, 4, 5, 6}s1.add(1)print(s1) #{1, 2, 3, 4, 5, 6}#remove(key)刪除元素s1.remove(6)print(s1) #{1, 2, 3, 4, 5}
Python雜湊表的例子:dict、set