[Python] da lista di coppie a dict con lista di valori

Lorenzo Sutton lorenzofsutton a gmail.com
Mer 26 Set 2012 22:07:10 CEST


On 26/09/12 17:45, Marco De Paoli wrote:
>
>
> Il giorno 26 settembre 2012 17:37, Stefano Dal Pra <s.dalpra a gmail.com
> <mailto:s.dalpra a gmail.com>> ha scritto:
>
>     Un altro modo puo' essere:
>
>      >>> base = [(1, 100), (1, 200), (3, 100)]
>      >>> categories = [1, 2, 3]
>      >>> d = {}
>      >>> x = [d.setdefault(x[0],[]).append(x[1]) for x in base] + [
>     d.setdefault(n,[]) for n in categories ]
>      >>> d
>     {1: [100, 200], 2: [], 3: [100]}
>
>
> sì, direi che è parente stretto del mio iniziale
> nella seconda lista mi hai giustamente fatto notare che
>
> if not k in result
>
> non è necessaria
>
> rimangono i dubbi iniziali che ha detto Marco B
> (qui addirittura c'è una somma che non è una somma e un assegnazione che
> non è un assegnazione)

Lo so che per alcuni è un quasi un taboo, ma mi chiedo...per qualche 
riga in più non è però più leggibile il doppio for?

result = {}
for i in categories:
     result[i] = []
     for k,v in base:
         if k == i:
             result[k].append(v)

Lorenzo



Maggiori informazioni sulla lista Python