[pyar] Ordenamiento diccionarios

Facundo Batista facundobatista en gmail.com
Mie Abr 13 12:44:24 ART 2011


2011/4/13 Natalia Gutierrez <ngutierrez en icop.com.ar>:

> diccionario ={1:"Baño",2:"Batata",3:"bolsa",4:"Bata"}
>
> y al hacer
>
> sorted(diccionario.iteritems(), key=operator.itemgetter(1))
>
> me devuelve
>
> [(4, 'Bata'), (2, 'Batata'), (1, 'Baño'), (3, 'bolsa')]
>
> y lo que yo pretendo que me devuelva es:
>
> [(3, 'bolsa'), (1, 'Baño'), (4, 'Bata'), (2, 'Batata')]
>
> Estuve leyendo algo de case insensitive, aplicando "lower" pero no logro
> hacerlo.... Alguno sabe o se le ocurre como se podria hacer???? Muchas
> gracias

¿Por qué ponés 'bolsa' primero? O sea, incluso si aplicás "lower",
'bolsa' es mayor que 'batata'.

Por otro lado, si lo que realmente querés es ordenar en función de los
strings pasados a minúscula y el ejemplo estuvo mal, es así:

>>> diccionario ={1:"Baño",2:"Batata",3:"base",4:"Bata"}

>>> sorted(diccionario.iteritems(), key=operator.itemgetter(1))
[(4, 'Bata'), (2, 'Batata'), (1, 'Ba\xc3\xb1o'), (3, 'base')]

>>> sorted(diccionario.iteritems(), key=lambda x: x[1].lower())
[(3, 'base'), (4, 'Bata'), (2, 'Batata'), (1, 'Ba\xc3\xb1o')]

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/



More information about the pyar mailing list