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

Ernesto Arbitrio ernesto.arbitrio a gmail.com
Ven 4 Dic 2020 11:26:06 CET


scusa items() e non iteritems() che é python2 ... sorry ma sono in una fare
di migrazione progetto da py2 a py3 e sto impazzendo :/

On Fri, Dec 4, 2020 at 11:25 AM Ernesto Arbitrio <ernesto.arbitrio a gmail.com>
wrote:

> 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/3e78a4b6/attachment.html>


Maggiori informazioni sulla lista Python