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