[pyar] consulta sobre ordenación

fisa fisadev en gmail.com
Dom Mar 10 19:10:23 ART 2013


On Mar 10, 2013 6:32 PM, "Tordek" <kedrot en gmail.com> wrote:
>
> On 10/03/13 16:44, Claudio Aranda wrote:
>
> >>> l = ['eD', 'fC', 'hC', 'iC', 'jD', 'bD', 'fH', 'mS', 'aS', 'mD']
>
>
>> Para ordenarla debo seguir estas pautas:
>>
>> 1) Armar subconjuntos de acuerdo a la mayúscula y luego ordenar esos
>> subconjuntos por la cantidad de miembros (en orden ascendente), la
>> lista queda de la siguiente forma:
>>              ['fH', 'mS', 'aS', 'fC', 'hC', 'iC', 'jD',
>> 'bD', 'eD', 'mD']
>
>
> Itertools te da una mano:
>
> >>> from itertools import groupby
>
> Ojo que groupby combina elementos consecutivos, así que primero hay que
ordenar la lista por el elemento a agrupar:
>
> >>> [list(v) for k, v in (groupby(sorted(l, key=lambda x:x[1]), lambda x:
x[1]))]
> [['fC', 'hC', 'iC'], ['eD', 'jD', 'bD', 'mD'], ['fH'], ['mS', 'aS']]
>
> (Es un poco complicada la línea porque itertols devuelve un iterador de
iteradores.)
>
> Con eso armás los grupos. Después lo ordenás con:
>
> >>> sorted([list(v) for k, v in (groupby(sorted(l, key=lambda x:x[1]),
lambda x: x[1]))], key=lambda x: len(x))
> [['fH'], ['mS', 'aS'], ['fC', 'hC', 'iC'], ['eD', 'jD', 'bD', 'mD']]
>
> Fijate que a 'sorted' le paso el parámetro 'key' para decirle con
respecto a qué valor ordenar.
>
>
>>
>> 2) Ahora cada subconjunto debe estar ordenado de manera ascendente y
>> de acuerdo a la minúscula, con lo que la lista queda ordenada así:
>>              ['fH', 'aS', 'mS', 'fC', 'hC', 'iC', 'bD',
>> 'eD', 'jD', 'mD']
>
>
> >>> sorted([sorted(list(v)) for k, v in (groupby(sorted(l, key=lambda
x:x[1]), lambda x: x[1]))], key=lambda x: len(x))
> [['fH'], ['aS', 'mS'], ['fC', 'hC', 'iC'], ['bD', 'eD', 'jD', 'mD']]
>
> Agregué un 'sorted' en el list(v) del iterador interno.
>
> Y, finalmente, lo rearmás
>
> >>> [x for sublist in sorted([sorted(list(v)) for k, v in
(groupby(sorted(l, key=lambda x:x[1]), lambda x: x[1]))], key=lambda x:
len(x)) for x in sublist]
>
> ['fH', 'aS', 'mS', 'fC', 'hC', 'iC', 'bD', 'eD', 'jD', 'mD']
>
>
> Obviamente, es perfectamente posible (y recomendable) hacerlo en varias
líneas.
>
>>
>> Espero haber sido más claro y agradezco la colaboración, si
>> necesitan más aclaraciones avisen
>> gracias muchachos
>>
>>
>> El 10 de marzo de 2013 17:58, <enri57ar en gmail.com
>> <mailto:enri57ar en gmail.com>> escribió:
>>
>>
>>     Por favor, aclará los criterios de comparación con ejemplos.
>>     -----Original Message-----
>>     From: Claudio Aranda <fakirjujuy en gmail.com
>>     <mailto:fakirjujuy en gmail.com>>
>>     Sender: pyar-bounces en python.org.ar
>>     <mailto:pyar-bounces en python.org.ar>
>>     Date: Sun, 10 Mar 2013 18:24:54
>>     To: <pyar en python.org.ar <mailto:pyar en python.org.ar>>
>>     Reply-To: Python Argentina <pyar en python.org.ar
>>     <mailto:pyar en python.org.ar>>
>>     Subject: [pyar] consulta sobre ordenación
>>
>>     _______________________________________________
>>     pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
>>
>>     http://listas.python.org.ar/listinfo/pyar
>>
>>     PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>>     La lista de PyAr esta Hosteada en USLA - Usuarios de Software
>>     Libre de Argentina - http://www.usla.org.ar
>>     _______________________________________________
>>     pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
>>
>>     http://listas.python.org.ar/listinfo/pyar
>>
>>     PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>>     La lista de PyAr esta Hosteada en USLA - Usuarios de Software
>>     Libre de Argentina - http://www.usla.org.ar
>>
>>
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
>>
>
>
> --
> Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
> http://tordek.com.ar :: http://twitter.com/tordek
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar

Yo no habría resuelto y puesto el código, porque lo más probable es que sea
un ejercicio de la univ, y no está nada bueno que nosotros le estemos
haciendo los trabajos que los alumnos tienen que hacer...

--
fisa - Juan Pedro Fisanotti
(desde el celular)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130310/6a7025b5/attachment.html>


More information about the pyar mailing list