[pyar] Lista agrupada
Ale
peralta.alejandro en gmail.com
Vie Sep 23 18:32:12 ART 2011
El 23 de septiembre de 2011 17:53, Daniel Moisset
<dmoisset en machinalis.com>escribió:
>
>
> 2011/9/23 Daniel <dmlistapython en gmail.com>
>
>> 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....
>>
>
> Esto es casi lo mismo que te dijo otra gente, pero a mi criterio mas
> legible
>
> import collections
> vehiculos = collections.defaultdict(list)
> for tipo, chapa, dueno in lista:
> vehiculos[dueno].append ((tipo, chapa))
>
> despues podes recorrer con:
>
> for dueno in vehiculos:
> hacer algo con vehiculos[dueno], por ejemplo
> for tipo, chapa in vehiculos[dueno]:
> print dueno, tipo, chapa
>
> Saludos,
> D.
>
Puedo dar mi versión, puedo, puedo??? :-P Medio funcional...
iIn [1]: import operator
In [2]: igetter = operator.itemgetter(2)
In [3]: mylist = [ ["auto", "DAL399", "alvarez"], ["moto", "393DSR",
"gomez"], ["auto", "SFT320", "perez"], ["auto", "DSL598", "gomez"]]
In [4]: imimport operator
In [2]: igetter = operator.itemgetter(2)
In [3]: mylist = [ ["auto", "DAL399", "alvarez"], ["moto", "393DSR",
"gomez"], ["auto", "SFT320", "perez"], ["auto", "DSL598", "gomez"]]
In [4]: import itertools
In [5]: for k, g in itertools.groupby(sorted(mylist, key=igetter), igetter):
k, list(g)
...:
Out[9]: ('alvarez', [['auto', 'DAL399', 'alvarez']])
Out[9]: ('gomez', [['moto', '393DSR', 'gomez'], ['auto', 'DSL598',
'gomez']])
Out[9]: ('perez', [['auto', 'SFT320', 'perez']])
--
Ale.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110923/3e94fcee/attachment.html>
More information about the pyar
mailing list