日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python字典内存分析_(一)Python入门-3序列:18字典-核心底层原理-内存分析-查找值对象过程...

發(fā)布時(shí)間:2025/3/20 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python字典内存分析_(一)Python入门-3序列:18字典-核心底层原理-内存分析-查找值对象过程... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:根據(jù)鍵查找“鍵值對(duì)”的底層過程

明白一個(gè)鍵值對(duì)是如何存儲(chǔ)到數(shù)組中的,根據(jù)鍵對(duì)象取到值對(duì)象,理解起來就 簡(jiǎn)單了。

>>> a.get("name")

'jack'

當(dāng)我們調(diào)用a.get(“name”),就是根據(jù)鍵“name”查找到“鍵值對(duì)”,從而找到值對(duì)象“jack”。

第一步,我們?nèi)匀灰?jì)算“name”對(duì)象的散列值:

>>> bin(hash("name"))

'-0b1010111101001110110101100100101'

和存儲(chǔ)的底層流程算法一致,也是依次取散列值的不同位置的數(shù)字。 假設(shè)數(shù)組長度為 8,我們可以拿計(jì)算出的散列值的最右邊 3位數(shù)字作為偏移量,即“101”,十進(jìn)制是數(shù)字 5。我們查看偏移量 5,對(duì)應(yīng)的bucket 是否為空。如果為空,則返回None。如果不為空, 則將這個(gè)bucket的鍵對(duì)象計(jì)算對(duì)應(yīng)散列值,和我們的散列值進(jìn)行比較,如果相等。則將對(duì) 應(yīng)“值對(duì)象”返回。如果不相等,則再依次取其他幾位數(shù)字,重新計(jì)算偏移量。依次取完后, 仍然沒有找到。則返回 None。流程圖如下:

二:用法總結(jié)

1. 鍵必須可散列

(1) 數(shù)字、字符串、元組,都是可散列的。

(2) 自定義對(duì)象需要支持下面三點(diǎn):

a 支持 hash()函數(shù)

b 支持通過__eq__()方法檢測(cè)相等性。

c 若a==b為真,則 hash(a)==hash(b)也為真。

2. 字典在內(nèi)存中開銷巨大,典型的空間換時(shí)間。

3. 鍵查詢速度很快

4. 往字典里面添加新建可能導(dǎo)致擴(kuò)容,導(dǎo)致散列表中鍵的次序變化。因此,不要在遍歷字典的同時(shí)進(jìn)行字典的修改。

總結(jié)

以上是生活随笔為你收集整理的python字典内存分析_(一)Python入门-3序列:18字典-核心底层原理-内存分析-查找值对象过程...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。