1 字典 2 Python內置的字典數據類型:全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度 3 4 當將key-value放進dict時,dict會根據key算出value要存放地址,并將value放入該地址 5 當通過key從dict獲取value時,dict會根據key算出value存放的地址,然后訪問該地址獲取value 6 這個通過key計算位置的算法稱為哈希算法(Hash) 7 8 dict的一個key只能對應一個value,多次對一個key放入value,后面的值會覆蓋前面的值 9 dict內部存放的順序和key放入的順序是沒有關系的 10 11 dict和list的比較 12 list:1) 查找和插入的時間隨著元素的增加而增加 13 list總是從第一個元素開始查找,知只到找到目標元素為止 14 2) 內存占用大,內存浪費多 15 16 dict:1) 查找和插入的速度極快,不會隨著key的增加而變慢 17 dict先從字典索引查到value具體地址后,再根據具體地址找到value值 18 這樣即使dict里的數據很多也不會降低查詢速度 19 就像當你知道某個單詞在字典的具體哪一頁后,即使字典再厚,你總能一下子找到那個單詞 20 2) 內存占用小,內存浪費少 21 22 注意:1) dict是用空間來換取時間的一種方法, 23 2) dict的key必須是不可變對象 24 由于key是dict用來計算value的存儲地址的,如果key是經常變化的,則每次計算相同的key會得出不同的存儲地址,那dict內部就完全混亂了 25 因此要保證通過key計算得出的value的存儲地址的正確性,作為key的對象就不能變 26 在Python中,字符串、整數等都是不可變的,所以可放心地作為key,而list是可變的,就不能作為key 27 28 使用示例: 29 30 初始化dict 31 d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} 32 print(d['Michael']) #輸出:Michael 33 print(d['tttt']) #輸出:key不存在會報錯,如:KeyError: 'tttt' 34 35 通過key放入dict 36 d['Adam'] = 67 37 print(d['Adam']) #輸出:67 38 39 判斷key是否存在 40 1 通過in判斷key是否存在 41 print('Thomas' in d) #輸出:False 42 43 2 通過dict提供的get()方法,如果key不存在,可以返回None,或者自定義value 44 print(d.get('Thomas')) #輸出:None,控制臺什么也不顯示 45 print(d.get('Thomas'),-1) #輸出:-1 46 47 刪除key-value鍵值對 48 print(d.pop('Bob')) #輸出:75, 返回該key對應的value 49 50 將list放入dict 51 d={[1,2,3]} #typeError:unhashable type:'list', 原因是list是可變的,不能作為key
?