a
のキーをb
の値にマッピングして、辞書として機能する対の単純なリスト[(a,b)]
のような振る舞いをするタイプを使用したいと思います。指定されたキーの順序。 (つまり、通常のリストと同じように、「最後の要素」として認識されるアイテムを「追加」できるようにしたいと思っています)。しかし、線形のパフォーマンスよりも優れたキー、つまり何のためのランダムアクセスルックアップを希望しますか?Data.Map
提供します。同期中に二つの重要なコレクションを保つことなど、定義済みのキー順を持つ辞書型
data OrderedDict a b = OrderedDict (Map a b) [a]
、その後append
操作を定義:1つのオプションは、ちょうど彼らの順序を定義するキーのリストに加えて、通常のマップを維持するだろう。同じキーの2つの別々のコレクションを維持することは醜いようです。キーによる効率的なランダムアクセスルックアップを備えた順序付けされたキーを既に組み合わせた既製のデータ型はありますか?
Javaの[LinkedHashMap](http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html)は、同様のことをするようです:マップを介してキーのリストをスレッドします。 PythonのOrderedDictは単なるペアのリストなので、ここでは何の助けにもなりません。 –
「定義済みの注文」とはどういう意味ですか? 'a1'と' a2'の2つのキーが与えられている場合、 'a1'が' a2'に先行するか、実行時に決定される優先順位かは事前に固定されていますか? – Peter
@peter通常のリストと同じ意味で '定義された順序'を意味します - もし 'a1'を追加した後に' a2'を追加すると、 'a1'が' a2'の前に追加されます – gcbenison