[pyar] Lista agrupada

John Rowland Lenton john.lenton en canonical.com
Lun Sep 26 12:42:21 ART 2011


On Mon, 26 Sep 2011 12:26:44 -0300, Daniel <dmlistapython en gmail.com> wrote:
> El día 26 de septiembre de 2011 09:16, Alejandro Santos
> <listas en alejolp.com> escribió:
> > 2011/9/26 John Rowland Lenton <john.lenton en canonical.com>:
> >>
> >> 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)
> >>
> >
> En realidad empecé probando con groupby pero no logré ni entender
> cómo opera ni hacerlo andar, en la consulta inicial pensé que me sugerirían
> de movida eso, pero como no pasó pensé que había interpretado mal
> la utilidad de esta función.
> 
> La otra manera, tampoco la entendí pero la hice andar :P
> 
> se que es básico pero no etiendo que valores irían tomando k y g según
> el fragmento que me enviaste.

k es cada uno de los valores que va tomando la función key, g es un
iterador que te da cada uno de los valores consecutivos de la lista
original que pasaste, mientras key sea k.

Jugá con el script un ratito, ordenando por distintas columnas, creo que
lo agarrás. Es de las cosas más oscuras de itertools así que no te
sientas mal :).
------------ 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/6d346a34/attachment.sig>


More information about the pyar mailing list