簡體   English   中英

Python-如何在字典中保留未排序的列表順序而無需單獨的數據結構

[英]Python - how to preserve unsorted list order in dictionary without separate data structures

我有一個列表,其元素是使用某些外部業務邏輯排列的,並且不應按字母順序或任何其他順序排序。 我還有一本字典,其鍵是列表元素。 這迫使我維護兩個不同的數據結構。 如果將元素添加到列表中,則必須將鍵添加到字典中,反之亦然。 這是數據庫的重復。 我想避免這種情況。 我打算避免在列表L中使用元組來避免它:[(k1,v1),(k2,v2),...]其中k1,k2等的順序正確。 是否有更好的內置數據結構可以讓我更優雅地解決這個問題? 隨機訪問的效率將是首選。 現在,訪問L [k3]基本上是O(n)。 另一方面,當我想打印密鑰時,dict(L)不會保留順序。

您可以使用collections.OrderedDict()字典子類來維護順序。 添加新鍵會將它們添加到訂單的“末尾”,刪除鍵會保留其余訂單。

順序詞典與常規詞典一樣,但是它們記住項目插入的順序。 在有序字典上進行迭代時,將按照項的鍵首次添加的順序返回項。

從列表創建OrderedDict()實例時,請按順序輸入(key, value)對,以設置初始順序。 不要試圖通過常規詞典,因為此類對象沒有特定的順序,您最終將以相同的任意順序創建實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM