Python 3.6 中的字典是有順序的嗎?
在 Python 3.6 及更高版本中,字典表現出插入順序,這意味著它們保留插入順序添加鍵值對。無法在所有 Python 實作中保證此行為,僅適用於 CPython 解譯器。
提高 Python 3.6 字典實現的效率
Python 3.6 中的新字典實作利用兩個陣列來維護插入順序和高效的雜湊查找。
與先前使用的鍵值條目稀疏數組(dk_entries) 相比,此方法利用較小尺寸的整數數組(dk_indices),從而實現更緊湊的記憶體佔用。先前為效能最佳化而分配的稀疏數組已不再需要容納固定大小的 2/3 空白空間。
資料結構的視覺化
範例字典:
d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'}
舊數據結構:
entries = [['--', '--', '--'], [-8522787127447073495, 'barry', 'green'], ['--', '--', '--'], ['--', '--', '--'], ['--', '--', '--'], [-9092791511155847987, 'timmy', 'red'], ['--', '--', '--'], [-6480567542315338377, '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 3.6 字典是否維護插入順序以及如何實作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!