[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