亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python 的字典(Dict)是如何存儲(chǔ)的

系統(tǒng) 1628 0

前言

Python 的字典有好多個(gè)名稱("映射"、"哈希"、"散列"或者"關(guān)系數(shù)組"),那你知道為什么字典會(huì)被稱為 Hash(翻譯為"哈希"或"散列")嗎?

你知道為什么字典對(duì)于鍵(Key)的存儲(chǔ)數(shù)據(jù)要求比較嚴(yán)格,但對(duì)于對(duì)應(yīng)的值(Value)的存儲(chǔ)卻要求很寬松嗎?

讀完這篇文章,你將深刻理解這些問(wèn)題背后的真相!

hash

首先我們來(lái)解釋一下什么是 Hash,來(lái)自維基百科:

散列函數(shù)(或散列算法,又稱哈希函數(shù),英語(yǔ):Hash Function)是一種從任何一種數(shù)據(jù)中創(chuàng)建小的數(shù)字“指紋”的方法。散列函數(shù)把消息或數(shù)據(jù)壓縮成摘要,使得數(shù)據(jù)量變小,將數(shù)據(jù)的格式固定下來(lái)。該函數(shù)將數(shù)據(jù)打亂混合,重新創(chuàng)建一個(gè)叫做散列值的指紋。散列值通常用來(lái)代表一個(gè)短的隨機(jī)字母和數(shù)字組成的字符串。好的散列函數(shù)在輸入域中很少出現(xiàn)散列沖突。在散列表和數(shù)據(jù)處理中,不抑制沖突來(lái)區(qū)別數(shù)據(jù),會(huì)使得數(shù)據(jù)庫(kù)記錄更難找到。

世界上沒(méi)有兩片完全相同的樹(shù)葉,也沒(méi)有兩個(gè)相同的指紋,散列函數(shù)是用于從數(shù)據(jù)中創(chuàng)建小的數(shù)字指紋的方法。

我們看下圖示:

Python 的字典(Dict)是如何存儲(chǔ)的_第1張圖片

如圖,Python 調(diào)用內(nèi)部的散列函數(shù),將鍵(Key)作為參數(shù)進(jìn)行轉(zhuǎn)換,得到一個(gè)唯一的地址(這也就解釋了為什么給相同的鍵賦值會(huì)直接覆蓋的原因,因?yàn)橄嗤逆I轉(zhuǎn)換后的地址是一樣滴),然后將值(Value)存放到該地址中。

對(duì)于 Python 來(lái)說(shuō),鍵(Key)必須是可哈希的,換句話說(shuō)就是要可以通過(guò)散列函數(shù)計(jì)算出唯一地址的。那如果拿一個(gè)變量當(dāng)鍵(Key)可以嗎?肯定不行。因?yàn)樽兞侩S時(shí)都可能改變,不符合可哈希原則!

同樣的,列表、字典、集合這些都是可變的,所以都不能做為鍵(Key)來(lái)使用。

那有朋友可能會(huì)問(wèn),那元祖呢?元祖總該是不變的吧?

其實(shí)不然,因?yàn)樵胬镞吙梢源娣帕斜磉@類(lèi)可變因素,所以如果實(shí)在想拿元祖當(dāng)字典的鍵(Key),那必須對(duì)元祖做限制:元組中只包括像數(shù)字和字符串這樣的不可變?cè)貢r(shí),才可以作為字典中有效的鍵(Key)。

另外還需要注意的一點(diǎn)是,Python 的哈希算法對(duì)相同的值計(jì)算得到的結(jié)果是一樣的,也就是說(shuō) 12315 和 12315.0 的值相同,他們被認(rèn)為是相同的鍵(Key)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 九九视频在线免费观看 | 久久综合久久伊人 | 精品一久久 | 精品久久中文字幕有码 | 国产啪视频1000部免费视频 | 亚洲欧美在线视频 | 亚洲精品一区henhen色 | 夜夜艹日日艹 | 草草在线播放 | 日本高清不卡二区 | 欧美性猛交xx乱大交 | 久热免费在线观看 | 91在线亚洲综合在线 | 国内精品久久久久久久亚洲 | 日本毛片网 | 91日韩视频 | 精品一久久香蕉国产线看播放 | 日日操夜夜操视频 | 天天做天天添婷婷我也去 | 日日拍夜夜嗷嗷叫狠狠 | 欧美日韩精品一区二区三区四区 | 亚洲涩综合| 国产在线精品一区免费香蕉 | 伊人久操| 狠狠的日视频 | 中文一区 | 精品久久久久久亚洲精品 | 狠狠色丁香婷婷综合久久来 | 中文字幕日韩欧美一区二区三区 | 久久久久国产免费 | 久久这里只有精品首页 | 欧美日韩在大午夜爽爽影院 | 99爱视频在线观看 | 手机看片在线精品观看 | 91国内在线观看 | 五月天婷五月天综合网在线 | 亚洲精品美女久久久久网站 | 同性女女黄h片在线播放 | 黄色片在线免费观看视频 | 国产100页| 免费爱爱 |