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

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