On 26/09/12 17:45, Marco De Paoli wrote:


Il giorno 26 settembre 2012 17:37, Stefano Dal Pra <s.dal...@gmail.com
<mailto:s.dal...@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

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a