[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