Recientemente me encontré con un código Java que simplemente colocaba algunas cadenas en un TreeSet de Java, implementaba un comparador basado en la distancia, y luego hacía su camino alegremente hacia la puesta del sol para calcular un puntaje dado para resolver el problema.¿El equivalente TreeSet de Java en Python?
Mis preguntas,
¿Existe una estructura de datos equivalentes disponibles para Python?
- El conjunto de árboles de Java parece ser básicamente un diccionario ordenado que puede usar un comparador de algún tipo para lograr este orden.
veo que hay una PEP for Py3K para una OrderedDict, pero estoy usando 2.6.x. Hay un montón de implementaciones de Dict ordenadas, ¿alguien en particular que pueda ser recomendado?
PS, sólo para añadir - me podía probablemente importar DictMixin o UserDict y poner en práctica mi diccionario propia ordenados/ordenado, y hacer que suceda a través de una función de comparación - pero que parece ser excesiva.
Gracias.
Actualizar. Gracias por las respuestas. Para elaborar un poco, digamos que tengo una función de comparación definida como los thats, (dado un valor En particular),
def mycmp(x1, y1, ln):
a = abs(x1-ln)
b = abs(y1-ln)
if a<b:
return -1
elif a>b:
return 1
else:
return 0
estoy un poco inseguro sobre cómo iba a integrar este principio en el orden dado en el dict ordenado link given here...
Algo así como,
OrderedDict(sorted(d.items(), cmp=mycmp(len)))
ideas sería bienvenido.
Tenga en cuenta que 'OrderedDict' no es como Javas' TreeMap'. Ordenado aquí significa que los elementos están ordenados por tiempo de inserción. Eso no es lo que quieres Básicamente estás buscando un conjunto implementado a través de árboles de búsqueda binarios. – Albert