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

Marco De Paoli depaolim a gmail.com
Ven 21 Set 2012 15:27:09 CEST


ciao a tutti,
ho le seguenti liste:
base = [(1, 100), (1, 200), (3, 100)]
categories = [1, 2, 3]

e vorrei ottenere il seguente dizionario:
result = {1: [100, 200], 2: [], 3: [100]}

In pratica ogni chiave in categories è presente in result eventualmente con
valore lista vuota.

Ho pensato alla seguente soluzione:
result = {}
[result.setdefault(k, []).append(v) for k, v in base]
[result.setdefault(k, []) for k in categories if not k in result]

C'è però la terza riga che non mi piace perché leggo result *mentre* lo sto
modificando, per cui l'ho sostituita con:
[result.setdefault(k, []) for k in categories if not k in dict(base).keys()]

Domande:
1) ha senso lo scrupolo di non leggere result mentre lo modifico?
2) ... c'è qualcosa di più pythonico?

grazie,
Marco
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120921/4eb21042/attachment.html>


Maggiori informazioni sulla lista Python