[pyar] Lista agrupada

Claudio Freire klaussfreire en gmail.com
Vie Sep 23 17:36:18 ART 2011


2011/9/23 Daniel <dmlistapython en gmail.com>:
> y necesitaría recorrerla agrupada, algo así
>
> [gomez]
>      [auto, DSL598],
>      [moto, 393DSR]
> [alvarez]
>      [auto, DAL399]
> [perez]
>      [auto, SFT320]


Yo tengo en mi arsenal de funciones super útiles:

def multimap(l,constructor=list,appendor=list.append):
    NONE = _NONE
    rv = {}
    rvget = rv.get
    pk = rvk = NONE
    for k,v in l:
        if k is not pk:
            rvk = rvget(k,NONE)
            pk = k
        if rvk is NONE:
            rv[k] = rvk = constructor()
        appendor(rvk,v)
    return rv

Usando el ejemplo de Mauro:

>>> a=[ ['juanca', 4, 'tecnico'],
...    ['jose', 1, 'jugador'],
...    ['oscar', 2, 'jugador'],
...    ['rober', 3, 'hincha'], ]
>>> import operator
>>> multimap(map(operator.itemgetter(-1,slice(0,-1)), a))
{'hincha': [['rober', 3]], 'jugador': [['jose', 1], ['oscar', 2]],
'tecnico': [['juanca', 4]]}
>>>



More information about the pyar mailing list