Me gustaría utilizar un tipo que se comporta como una lista simple de pares [(a,b)]
que sirve como diccionario, asignando claves del tipo a
a valores del tipo b
, mientras se mantiene un "usuario -specified ", orden definido de claves. (es decir, al igual que con las listas ordinarias, me gustaría poder "agregar" un elemento que luego se reconoce como el "último elemento"). Sin embargo, me gustaría buscar acceso aleatorio en claves con un rendimiento mejor que lineal, es decir, qué Data.Map
proporciona. Una opción sería la de simplemente mantener un mapa ordinaria, además de una lista de claves que define su orden:Un tipo de diccionario con un orden definido de claves
data OrderedDict a b = OrderedDict (Map a b) [a]
y luego definir append
operaciones, etc., que mantienen las dos colecciones principales sincronizados. Sin embargo, parece feo mantener dos colecciones separadas de las mismas claves. ¿Hay un tipo de datos ya preparado que ya combine teclas ordenadas con búsqueda de acceso aleatorio eficiente por clave?
La [LinkedHashMap] de Java [http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html] parece hacer algo similar : inserta una lista de teclas a través del mapa. Python's OrderedDict es simplemente una lista de pares, por lo que no son de ayuda aquí. –
¿Qué quiere decir con "orden definido"? Dadas dos teclas 'a1' y' a2', ¿se fija a priori si 'a1' precede a' a2' o es la precedencia determinada en tiempo de ejecución? – Peter
@peter Me refiero a 'orden definida' en el mismo sentido que con listas ordinarias - si añado 'a2' después de anexar' a1', entonces 'a1' precede a' a2' – gcbenison