diccionario a una lista

Chema Cortes pych3m4 en gmail.com
Jue Jul 5 09:42:52 CEST 2007


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])


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])

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])]




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