[pyar] Lista agrupada

John Rowland Lenton john.lenton en canonical.com
Lun Sep 26 09:13:02 ART 2011


On Fri, 23 Sep 2011 17:09:36 -0300, Daniel <dmlistapython en gmail.com> wrote:
> Necesito ayuda con un algoritmo al que no encuentro
> una forma pythonica de encararlo.
> 
> Tengo una lista de listas, desordenada
> ejemplo no real (porque las listas son largas)
> 
> [
>   [auto, DAL399, alvarez],
>   [moto, 393DSR, gomez],
>   [auto, SFT320, perez],
>   [auto, DSL598, gomez]
> ]
> y necesitaría recorrerla agrupada, algo así
> 
> [gomez]
>       [auto, DSL598],
>       [moto, 393DSR]
> [alvarez]
>       [auto, DAL399]
> [perez]
>       [auto, SFT320]
> 
> 
> Originalmente es un archivo CVS, así que si se les ocurre otra manera que
> no sea con listas bienvenida la idea....

no leí todo el thread de respuesta, aunque le pegué una ojeada y no ví
nadie que te sugieriera itertools.groupby. Sobre todo para listas largas
hace lo que querés.

Primero, ordená lo que querés agrupar. Después, groupby sobre la data
usando la misma función que usaste para ordenar, y salís hecho. Así:

    data.sort(key=operator.itemgetter(2))

    for k, g in itertools.groupby(data, key=operator.itemgetter(2)):
        print k, list(g)

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 489 bytes
Desc: no disponible
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110926/e98db0d4/attachment.sig>


More information about the pyar mailing list