Python 3.6 字典是有順序的嗎?
在 Python 3.6 及更高版本中,字典維護其元素的插入順序。這種行為稱為「插入排序」。與提供高級順序相關功能的 OrderedDict 不同,字典僅保留元素插入的順序。
Python 3.6 如何在保留順序的同時增強字典效能
Python 3.6字典實作採用雙數組方法來解決記憶體效率問題,同時保持插入order。
這個方法避免了對稀疏數組的需要,這就是以前實現中的情況。相反,它只存儲必要的條目及其索引,從而導致更緊湊的記憶體使用。
視覺表示:
考慮以下字典:
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中文網其他相關文章!