nel caso di valori univoci puoi invertire il dizionario: mydict2 = dict(map(reversed, mydict.items())) e quindi mydict2[val]
altrimenti non hai alternative secondo me ... devi iterare (o usare librerie esterne tipo Pandas) quindi scriverti qualcosa che usi una list comprehension [k for k, v in d.iteritems() if v == value] On Fri, Dec 4, 2020 at 11:23 AM Valerio Maggio <valerio.mag...@gmail.com> wrote: > On Fri, 4 Dec 2020 at 10:08, Gabriele Battaglia <iz4...@libero.it> wrote: > >> Ciao. >> > > Ciao Gabriele > > >> Se cerco la chiave conoscendo il valore, esiste una funzione da >> applicare sul dizionario che me la fornisca direttamente, invece di >> dover iterare con un for su tutti i valori? >> > > Non esiste questa funzione che io sappia, ma se ci pensi è un po' > controintuitivo, perché staresti utilizzando il dizionario al "contrario". > 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. > > >>> flipped_dict = {v:k for k, v in original_dict.items() } > > Se invece dovesse capitare che più valori nel tuo dizionario corrispondano > alla stessa chiave, userei un setdefault di sicurezza > > >>> flipped_dict = dict() > >>> for k, v in original_dict.items(): > ... rd.setdefault(v, []) > ... rd[v].append(k) > > *La versione compatta singola riga usando dict-comprehension è lasciata > come esercizio al lettore :D* > Scherzo! :D > > Valerio > _______________________________________________ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python