Python 3.6:字典保留插入順序
從Python 3.6 開始,CPython 實作中的字典表現出插入順序,這與先前的插入順序,這與先前的版本有很大不同。此功能現已成為 Python 3.7 中保證的語言功能。
改進的記憶體使用和效能
與之前相比,新的字典實現顯著減少了 20-25% 的記憶體使用Python 3.5。此改進源自於實作中使用單獨的陣列:
之前需要分配PyDictKeyEntry類型的稀疏數組,出於性能考慮導致數組,出於性能考慮空間浪費。新方法僅分配必要的條目,並採用 intX_t 類型的稀疏數組,這會消耗更少的記憶體。
使用的資料結構
最初,字典儲存為 [ keyhash, key, value] 位於稀疏數組中,其中空白條目以「--」表示。新方法將資料組織為:
條目: [[-9092791511155847987, 'timmy', 'red'],
[-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
這個修改後的結構顯著減少了記憶體開銷。
插入的好處排序
雖然新的字典實現主要關注內存優化,但插入排序功能具有方便的應用:
需要注意的是,在不同的 Python 實作或未來的語言版本中,不能保證插入順序。然而,在 Python 3.7 及更高版本中,這是一個值得您信賴的有保證的功能。
以上是Python 3.6 字典實作如何提高記憶體使用並保留插入順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!