[Python-es] diccionario a una lista

Milton Galo Patricio Inostroza Aguilera minoztro en gmail.com
Sab Jul 7 09:09:32 CEST 2007


El 5/07/07, Chema Cortes <pych3m4 en gmail.com> escribió:
> El 5/07/07, Leandro Tocalini <leandrotocalini en gmail.com> escribió:
> > tengo una consulta.... toy tomando valores de un archivo.. q se
> > agruparia asi...
> > ponele para el 5000 tengo los valores 30, 60, 200 ... para el 5010 tengo
> > los valores 12, 10
> > entonces tengo pensado armar un diccionario y quiero hacer append de
> > valores... despues me gustaria ordenar esos vectores... se puede hacer
> > asi o q estructura me aconsejan???
>
> Un diccionario está bien, aunque debes tener en cuenta que los
> diccionarios no se pueden ordenar. La ventaja es que puedes hacer la
> ordenación así de fácil:
>
> sorted(d.items(),key=lambda x:x[1])

como aporte humilde acá retornará una lista, para quedar con tu
diccionario original ordenado, sería:

d = dict( sorted(d.items(),key=lambda x:x[1]) )

>
>
> Aunque lo mejor sería que te crees tu propia clase derivada de 'dict':
>
> class MiDict(dict):
>     def __setitem__(self,k,v):
>         self.setdefault(k,[])
>         self[k].append(v)
>     def sorted(self):
>         return sorted(self.items(),key=lambda x:x[1])

excelente aporte chema...gracias por siempre compartir tus conocimientos :-)

>
> d=MiDict()
> d[5000]=30
> d[5010]=12
> d[5000]=60
> d[5000]=200
> d[5010]=10
>
> print d.sorted()   -->  [(5010, [12, 10]), (5000, [30, 60, 200])]
>
> #para "resetear", basta con borrar el elemento antes
> del d[5000]
> d[5000]=2
>
> print d.sorted()   --> [(5000, [2]), (5010, [12, 10])]
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>


-- 
Milton Inostroza Aguilera



Más información sobre la lista de distribución Python-es