<div dir="ltr"><div dir="ltr">On Fri, 4 Dec 2020 at 10:08, Gabriele Battaglia <<a href="mailto:iz4apu@libero.it">iz4apu@libero.it</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ciao.<br></blockquote><div><br></div><div>Ciao Gabriele</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Se cerco la chiave conoscendo il valore, esiste una funzione da <br>
applicare sul dizionario che me la fornisca direttamente, invece di <br>
dover iterare con un for su tutti i valori?<br></blockquote><div><br></div><div>Non esiste questa funzione che io sappia, ma se ci pensi è un po' controintuitivo, perché staresti utilizzando il dizionario al "contrario". </div><div>Proprio per questo, tutte le volte che mi è capitato un caso simile, sono ricorso alla versione flippata del dizionario - in cui le chiavi diventano valori, e viceversa.</div><div><br></div><div><font face="monospace">>>> flipped_dict = {v:k for k, v in original_dict.items() }</font></div><div><br></div><div>Se invece dovesse capitare che più valori nel tuo dizionario corrispondano alla stessa chiave, userei un setdefault di sicurezza</div><div><br></div><div><font face="monospace">>>> flipped_dict = dict()</font></div><div><font face="monospace">>>> for k, v in original_dict.items():</font></div><div><font face="monospace">... rd.setdefault(v, [])</font></div><div><font face="monospace">... rd[v].append(k)</font></div><div><font face="monospace"><br></font></div><div><font face="arial, sans-serif"><b>La versione compatta singola riga usando dict-comprehension è lasciata come esercizio al lettore :D</b></font></div><div><font face="arial, sans-serif">Scherzo! :D</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Valerio</font></div></div></div>