2009-03-17 12 views
13

LinkedHashMap es la implementación de Java de una estructura de datos similar a Hashtable (dict en Python) con un orden de iteración predecible. Eso significa que durante un recorrido sobre todas las teclas, se ordenan por inserción. Esto se hace mediante una lista vinculada adicional que mantiene el orden de inserción.Equivalente para LinkedHashMap en Python

¿Hay un equivalente a eso en Python?

Respuesta

10

Aunque puede hacer lo mismo manteniendo una lista para realizar un seguimiento de la orden de inserción, y Python >=3.1 tienen una clase OrderedDict en el módulo de colecciones.

Antes de 2.7, puede la subclase dictfollowing this recipe.

+0

El OrderedDict viene en Python 3.1, pero aún no está en 3.0, de acuerdo con la documentación que ha vinculado. – kquinn

+0

Sí, tienes razón, lo había pasado por alto. Editado – sykora

1

No lo creo; tendrías que usar un dict más una lista. Pero puede envolver fácilmente eso en una clase y definir keys, __getitem__, __setitem__, etc. para que funcione de la manera que desee.

2

No estoy seguro de si esto es lo que está pidiendo:

>>> dic = {1: 'one', 2: 'two'} 
>>> for k, v in dic.iteritems(): 
...  print k, v 

Puede solicitar el CID en el orden de la inserción utilizando ordereddict módulo.

d = ordereddict(dic, relax=True) 
+0

No creo que '' dict.iteritems'' proporcione un orden basado en el orden de inserción ... – sykora

+0

¡Correcto! Tienes que usar el módulo de orderdict para eso. – aatifh