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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a