Python內建了字典:dict的支持,dict全名dictionary,在其他語言中也稱為map,使用鍵-值(key- value)存儲,具有極快的查找速度。
舉個例子,假設要根據同學的名字找出對應的成績,如果用list實現,需要兩個list:
names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75, 85]
給定一個名字,要找出對應的成績,就先要在names中找到對應的位置,再從scores取出對應的成績,list越長,耗時越長。
如果用dict實現,只需要一個「名字」-「成績」的對照表,直接根據名字查找成績,無論這個表有多大,查找速度都不會變慢。用Python寫一個dict如下:
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95
為什麼dict找速度這麼快?因為dict的實作原理和查字典是一樣的。假設字典包含了1萬個漢字,我們要查某一個字,一個辦法是把字典從第一頁往後翻,直到找到我們想要的字為止,這種方法就是在list中查找元素的方法, list越大,找越慢。
第二種方法是先在字典的索引表裡(例如部首表)查這個字對應的頁碼,然後直接翻到該頁,找到這個字。無論找哪個字,這種查找速度都非常快,不會隨著字典大小的增加而變慢。
dict就是第二種實現方式,給定一個名字,比如'Michael',dict在內部就可以直接計算出Michael對應的存放成績的“頁碼”,也就是95這個數字存放的內存地址,直接取出來,所以速度非常快。
你可以猜到,這種key-value儲存方式,在放進去的時候,必須根據key算出value的存放位置,這樣,取的時候才能根據key直接拿到value。
把資料放入dict的方法,除了初始化時指定外,還可以透過key放入:
>>> d['Adam'] = 67 >>> d['Adam'] 67
由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值沖掉:
>>> d['Jack'] = 90 >>> d['Jack'] 90 >>> d['Jack'] = 88 >>> d['Jack'] 88
如果key不存在,dict就會報錯:
>>> d['Thomas'] Traceback (most recent call last): File "", line 1, in KeyError: 'Thomas'
要避免key不存在的錯誤,有兩種辦法,一是透過in判斷key是否存在:
>>> 'Thomas' in d False
以上是3分鐘搞清楚Python中dict函數的意義是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!