[Python] Dizionari: ottenere la chiave, dal valore.

Ernesto Arbitrio ernesto.arbitrio a gmail.com
Ven 4 Dic 2020 11:25:03 CET


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.maggio a gmail.com>
wrote:

> On Fri, 4 Dec 2020 at 10:08, Gabriele Battaglia <iz4apu a 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 a lists.python.it
> https://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20201204/de22a14f/attachment.html>


Maggiori informazioni sulla lista Python