我想使用類似於作爲字典的[(a,b)]
對的簡單列表,將類型爲a
的鍵映射到類型爲b
的值,同時保持「用戶-specified「,定義鍵的順序。 (即與普通列表一樣 - 我希望能夠「追加」一個項目,然後將其識別爲「最後一個元素」)。但是,我希望按鍵的隨機訪問查找具有比線性更好的性能,即什麼Data.Map
提供。一種選擇是隻保持在另外一個普通的地圖,它定義它們的順序鍵列表:具有定義的鍵的順序的字典類型
data OrderedDict a b = OrderedDict (Map a b) [a]
,然後定義append
操作等是保持兩個關鍵集合同步。雖然維護相同密鑰的兩個單獨集合似乎很難看。是否有一種現成的數據類型,它已經將有序密鑰與按鍵的高效隨機訪問查找相結合?
Java的[LinkedHashMap](http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html)似乎做了類似的事情:通過地圖線索密鑰列表。 Python的OrderedDict只是一個對列表,所以他們在這裏沒有任何幫助。 –
「定義訂單」是什麼意思?給定兩個鍵「a1」和「a2」,無論「a1」在「a2」之前還是在運行時確定的優先級,它都是先驗的固定值? – Peter
@peter我的意思是'定義順序'與普通列表相同 - 如果在追加'a1'後追加'a2',那麼'a1'在'a2'之前 – gcbenison