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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

一:根據鍵查找“鍵值對”的底層過程

明白一個鍵值對是如何存儲到數組中的,根據鍵對象取到值對象,理解起來就 簡單了。

>>> a.get("name")

'jack'

當我們調用a.get(“name”),就是根據鍵“name”查找到“鍵值對”,從而找到值對象“jack”。

第一步,我們仍然要計算“name”對象的散列值:

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

'-0b1010111101001110110101100100101'

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

二:用法總結

1. 鍵必須可散列

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

(2) 自定義對象需要支持下面三點:

a 支持 hash()函數

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

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

2. 字典在內存中開銷巨大,典型的空間換時間。

3. 鍵查詢速度很快

4. 往字典里面添加新建可能導致擴容,導致散列表中鍵的次序變化。因此,不要在遍歷字典的同時進行字典的修改。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。