首頁 > 後端開發 > Python教學 > Python 3.6 字典是有序的嗎?

Python 3.6 字典是有序的嗎?

Patricia Arquette
發布: 2024-12-21 17:19:10
原創
993 人瀏覽過

Are Python 3.6  Dictionaries Ordered, and How Does This Impact Performance?

Python 3.6 字典是有順序的嗎?

在 Python 3.6 及更高版本中,字典維護其元素的插入順序。這種行為稱為「插入排序」。與提供高級順序相關功能的 OrderedDict 不同,字典僅保留元素插入的順序。

Python 3.6 如何在保留順序的同時增強字典效能

Python 3.6字典實作採用雙數組方法來解決記憶體效率問題,同時保持插入order。

  • dk_entries 陣列: 依插入順序儲存字典條目。
  • dk_indices 陣列: 包含指向的索引到 dk_entries 陣列。

這個方法避免了對稀疏數組的需要,這就是以前實現中的情況。相反,它只存儲必要的條目及其索引,從而導致更緊湊的記憶體使用。

視覺表示:

考慮以下字典:

d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'}
登入後複製

在新的實作下,它將被儲存為:

indices = [None, 1, None, None, None, 0, None, 2]
entries = [[-9092791511155847987, 'timmy', 'red'],
           [-8522787127447073495, 'barry', 'green'],
           [-6480567542315338377, 'guido', 'blue']]
登入後複製

比較與先前的實作相比,這種方法顯著減少了記憶體浪費。

新字典實現的好處

主要是,新實作在保留插入順序的同時提高了記憶體使用率。雖然新舊實作之間的速度差異並不顯著,但某些操作(例如迭代和調整大小)可能會帶來效能提升。

以上是Python 3.6 字典是有序的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板