首頁 >後端開發 >Python教學 >Python 字典在 3.6 中保證保持插入順序嗎?

Python 字典在 3.6 中保證保持插入順序嗎?

Patricia Arquette
Patricia Arquette原創
2024-12-20 19:37:141030瀏覽

Are Python Dictionaries Guaranteed to Maintain Insertion Order in 3.6 ?

Python 3.6 中的字典是有順序的嗎?

從 Python 3.6 開始,CPython 實作中的字典是插入有序的,這意味著它們保留順序插入的項目數。但是,此行為被視為實作細節,不應依賴。

Python 3.7 中的保證插入順序

在 Python 3.7 中,字典的插入順序成為保證語言功能。這意味著所有符合標準的 Python 實作都必須提供插入排序字典。

插入排序的效能改進

Python 3.6 中的新字典實作透過維護兩個來實作插入排序arrays:

  • dkentries :依序儲存鍵和值條目
  • dk_indices:將索引儲存到dk_entries 中,充當哈希表。

此設計透過僅儲存所需的條目並使用稀疏索引數組來減少記憶體開銷。先前的實作分配了鍵和值條目的稀疏數組,導致出現空格。

資料結構視覺化

例如字典{ '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 字典中的插入順序是一項重大改進,它提高了記憶體效率,並使字典在 Python 實作中更加可靠。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn