我想使用类似于作为字典的[(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