課程內(nèi)容
Python入門課程NO50課 字典類型的高級理解
1、鍵的輸出順序
Python中的字典類型基于哈希表,在Python3.6版本前,字典中的鍵的輸出順序取決于鍵在哈希表中的存儲順序,從Python3.6版本以后,字典中的鍵的輸出順序按其插入的先后順序進行輸出。
Python3.6后版本的程序輸出為: name price
Python3.6前版本的輸出可能為: price name
2、鍵的數(shù)據(jù)類型
字典中的鍵的數(shù)據(jù)類型必須是靜態(tài)的數(shù)據(jù)類型,迄今為止學(xué)過的靜態(tài)的數(shù)據(jù)類型有:簡單數(shù)據(jù)類型,字符串,元組。列表和字典類型是不可哈希的類型。
3、字典的快速查找
字符串,列表,元組是一種線性的序列結(jié)構(gòu),在不對序列結(jié)構(gòu)進行任何處理時,對元素進行查找需要從頭到尾地進行遍歷。假設(shè)列表中包含1百萬個元素,那么按這種方式來查找,最慢需要比較1百萬次,才能判定元素是否存在于列表中。由此可分析,當數(shù)據(jù)量很大時,使用列表等序列結(jié)構(gòu)來進行元素查找,效率十分低下。字典類型采用哈希表進行實現(xiàn),在理想情況下,只需計算一次鍵名的哈希值,就可以快速地查找元素是否存在于數(shù)據(jù)集合中,即使數(shù)據(jù)集合中存在百萬級,甚至千萬級,億萬級的數(shù)據(jù)量。那么我們接下來介紹哈希表。
4、哈希表結(jié)構(gòu)
哈希表中的編號即為鍵名的哈希值,數(shù)據(jù)表中存儲了哈希值,以及鍵名,鍵值。Python字典的底層實現(xiàn)中,并非直接存儲鍵名,鍵值,存儲的是它們的引用。哈希(hash)函數(shù)又稱為散列函數(shù),計算鍵名的哈希值,就是將字典中的鍵名轉(zhuǎn)換為對應(yīng)的數(shù)字編號。現(xiàn)在來寫個簡單的代碼,來比較列表和字典的查找性能。
從程序的輸出可知,字典的查找速度幾乎是列表的1000倍,數(shù)據(jù)量越大,查找性能越明顯。

- 上一篇
Python入門課程NO49課 字典的格式化
使用字典進行格式化操作時,主要是通過關(guān)鍵字占位符的方式來進行格式化。這里的關(guān)鍵字占位符對應(yīng)于字典中的鍵名,鍵名出現(xiàn)在待格式化的字符串中,在對字符串進行格式化時,Python解釋器自動將字符串中的關(guān)鍵字占位符替換為對應(yīng)的鍵值。第一種方式:使用%與字典進行格式化未完
- 下一篇
Python入門課程NO51課 什么是集合
集合類型與字典類型非常接近,Python中的集合類型也是用{}符號括住的一個數(shù)據(jù)集合,集合中的元素以英文逗號進行分隔,其中的元素必須是靜態(tài)的數(shù)據(jù)類型。集合與字典一樣,底層實現(xiàn)基于哈希表:在交互模式中,我們可以得知集合的類型名為set:同時可以通過類型轉(zhuǎn)化來去除重復(fù)元素