Ordenar un diccionario...
Arnau Sanchez
pyarnau en gmail.com
Vie Mayo 8 10:54:22 CEST 2009
Yasser Almeida Hernandez wrote:
> Tengo un diccionario cuyos values son strings. Pudieran ayudarme a
> ordenarlo por la longitud de los strings, manteniendo los keys de los
> values.
>>> d = {
1: "hola",
2: "eo",
3: "adios",
}
>>> print sorted(d.iteritems(), key=lambda (key, value): len(value))
[(2, 'eo'), (1, 'hola'), (3, 'adios')]
En la inmensa mayoría de casos esto (pasarlo a lista ordenada) debería ser
suficiente. Si realmente necesitas un diccionario ordenado:
http://www.voidspace.org.uk/python/odict.html
> A proposito, es posible en un diccionario obtener un key dado el valor
> que le esta asignado....
¿Quieres decir obtener la clave a partir del valor? de forma directa no se puede
(le estás pidiendo a un diccionario justo lo contrario para lo que está
diseñado) así que puedes: 1) iterar hasta encontrar el valor y devuelves la
clave o, 2) creas un diccionario "girado":
d2 = dict((v, k) for (k, v) in d.iteritems())
d2["unvalor"]
Aunque deberás considerar qué pasa si tienes dos valores iguales en el
diccionario original.
--
Desarrollador freelance
http://www.arnau-sanchez.com
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es