ciao a tutti,<br>ho le seguenti liste:<br>base = [(1, 100), (1, 200), (3, 100)]<br>categories = [1, 2, 3]<br><br>e vorrei ottenere il seguente dizionario:<br>result = {1: [100, 200], 2: [], 3: [100]}<br><br>In pratica ogni chiave in categories è presente in result eventualmente con valore lista vuota.<br>
<br>Ho pensato alla seguente soluzione:<br>result = {}<br>[result.setdefault(k, []).append(v) for k, v in base]<br>[result.setdefault(k, []) for k in categories if not k in result]<br><br>C'è però la terza riga che non mi piace perché leggo result *mentre* lo sto modificando, per cui l'ho sostituita con:<br>
[result.setdefault(k, []) for k in categories if not k in dict(base).keys()]<br><br>Domande:<br>1) ha senso lo scrupolo di non leggere result mentre lo modifico?<br>2) ... c'è qualcosa di più pythonico?<br><br>grazie,<br>
Marco<br>