1. 程式人生 > >python基礎(六)dict

python基礎(六)dict

  1. Python內建了字典:dict的支援,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)儲存,具有極快的查詢速度。
    》 d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
    》d[‘Michael’]
    95
  2. 為什麼dict查詢速度這麼快?因為dict的實現原理和查字典是一樣的。假設字典包含了1萬個漢字,我們要查某一個字,一個辦法是把字典從第一頁往後翻,直到找到我們想要的字為止,這種方法就是在list中查詢元素的方法,list越大,查詢越慢。
    第二種方法是先在字典的索引表裡(比如部首表)查這個字對應的頁碼,然後直接翻到該頁,找到這個字。無論找哪個字,這種查詢速度都非常快,不會隨著字典大小的增加而變慢。
  3. 把資料放入dict的方法,除了初始化時指定外,還可以通過key放入:
    d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
    d[‘Adam’] = 67
    print(d)
    將得到{‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85, ‘Adam’: 67}
  4. 由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值沖掉:
    》d[‘Jack’] = 90
    》 d[‘Jack’]
    90
    》 d[‘Jack’] = 88
    》d[‘Jack’]
    88
  5. 如果key不存在,dict就會報錯
    要避免key不存在的錯誤,有兩種辦法,一是通過in判斷key是否存在:
    》 ‘Thomas’ in d
    False
    二是通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
    》d.get(‘Thomas’)
  6. 要刪除一個key,用pop(key)方法,對應的value也會從dict中刪除:
    》 d.pop(‘Bob’)
    75
    》 d
    {‘Michael’: 95, ‘Tracy’: 85}
  7. dict內部存放的順序和key放入的順序是沒有關係的。
  8. 和list比較,dict有以下幾個特點:查詢和插入的速度極快,不會隨著key的增加而變慢;
    需要佔用大量的記憶體,記憶體浪費多。
    而list相反:查詢和插入的時間隨著元素的增加而增加;佔用空間小,浪費記憶體很少。
    所以,dict是用空間來換取時間的一種方法。
  9. 通過key計算位置的演算法稱為雜湊演算法(Hash)。
    要保證hash的正確性,作為key的物件就不能變。在Python中,字串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key:
    》 d[key] = ‘a list’
    Traceback (most recent call last):
    File “”, line 1, in
    TypeError: unhashable type: ‘list’