3分鐘搞清楚Python中dict函數的意義是什麼

Tomorin
發布: 2018-08-17 14:47:57
原創
5535 人瀏覽過

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 "<stdin>", line 1, in <module>
KeyError: &#39;Thomas&#39;
登入後複製

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

>>> &#39;Thomas&#39; in d
False
登入後複製


以上是3分鐘搞清楚Python中dict函數的意義是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板