logo

Python | Obteniu la clau del valor al diccionari

Vegem com obtenir la clau per valor al diccionari Python.

Exemple: codi One-Liner



Python 3




convertir un objecte java a json





# creating a new dictionary> my_dict>=>{>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # one-liner> print>(>'One line Code Key value: '>,>list>(my_dict.keys())> >[>list>(my_dict.values()).index(>100>)])>

>

>

Sortida:

Java>

Extreu la clau del diccionari de Python mitjançant Value

Mètode 1: obteniu la clau per valor mitjançant la comprensió de la llista

Una comprensió de llista consisteix en claudàtors que contenen l'expressió, que s'executa per a cada element juntament amb el bucle for per iterar sobre cada element de la llista de Python per obtenir la clau d'un valor de Diccionari .

Python 3




dic>=>{>'geeks'>:>'A'>,>'for'>:>'B'>,>'geeks'>:>'C'>}> value>=> {i>for> i>in> dic>if> dic[i]>=>=>'B'>}> print>(>'key by value:'>,value)>

>

els números de l'alfabet
>

Sortida:

key by value: {'for'}>

Complexitat temporal: O(N)
Espai auxiliar: O(1)

Mètode 2: Obteniu la clau per valor mitjançant un list.index()

El mètode index(). retorna l'índex del valor corresponent en una llista. L'enfocament utilitzat aquí és trobar dues llistes separades de claus i valors. A continuació, traieu la clau amb el botó posició del valor a la llista val. Com a clau a qualsevol posició N de la llista_claus tindrà un valor corresponent a la posició N de la llista_val.

Python 3




# creating a new dictionary> my_dict>=>{>'java'>:>100>,>'python'>:>112>,>'c'>:>11>}> # list out keys and values separately> key_list>=> list>(my_dict.keys())> val_list>=> list>(my_dict.values())> # print key with val 100> position>=> val_list.index(>100>)> print>(key_list[position])>

>

>

Sortida:

java>

Complexitat temporal: O(1)
Espai auxiliar: O(1)

Mètode 3: Obteniu la clau per valor mitjançant dict.item()

També podem obtenir la clau d'un valor fent coincidir tots els valors mitjançant dict.item() i després imprimint la clau corresponent al valor donat.

Python 3




# function to return key for any value> def> get_key(val):> > >for> key, value>in> my_dict.items():> >if> val>=>=> value:> >return> key> >return> 'key doesn't exist'> # Driver Code> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> print>(get_key(>100>))> print>(get_key(>11>))>

>

>

Sortida

Java C>

Complexitat temporal: O(n), on n és el nombre de parells clau-valor al diccionari.
Espai auxiliar: O(1), ja que l'espai utilitzat per la funció no depèn de la mida del diccionari d'entrada.

Mètode 4: utilitzant lambda i filter()

Aquí teniu un exemple d'ús de la funció filter() per obtenir la clau corresponent a un valor en un diccionari:

Python 3


matrius java



my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # Get the key corresponding to value 100> key>=> list>(>filter>(>lambda> x: my_dict[x]>=>=> 100>, my_dict))[>0>]> print>(key)> #This code is contributed by Edula Vinay Kumar Reddy>

>

>

Sortida

Java>

En aquest exemple, la funció filter() s'utilitza per crear una llista de claus a partir de my_dict on el valor és igual a 100. La llista resultant s'indexa a la posició 0 per obtenir el primer element, que és la clau corresponent al valor. 100.

Complexitat temporal: O(n) , ja que la funció filter() ha de recórrer tot el diccionari per crear la llista de claus.
L'espai auxiliar és O(n) , ja que la llista de claus creada per filter() té una mida igual al nombre d'elements del diccionari.

MÈTODE 5: Ús del mètode d'elements

Aquest codi troba la clau d'un valor determinat en un diccionari mitjançant una comprensió de llista per iterar sobre els elements del diccionari i comprovar si el valor coincideix amb el valor donat. Si es troba una clau, s'afegeix a una llista i el primer element de la llista s'imprimeix com a clau per al valor donat. Si el valor no es troba al diccionari, s'imprimeix un missatge que indica que no s'ha trobat.

Passos:

  1. Utilitzeu el mètode d'elements del diccionari per recórrer cada parell clau-valor a my_dict.
  2. Comproveu si el valor associat a la clau actual és igual al valor donat.
  3. Si és igual, afegiu la clau actual a una llista de claus.
  4. Si el bucle es completa sense trobar un valor coincident, imprimiu un missatge indicant que no s'ha trobat el valor.
  5. Si s'ha trobat una clau coincident, imprimiu la primera clau de la llista.

Python 3




if else declaracions java
# input list> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 112> key_list>=> [key>for> key, val>in> my_dict.items()>if> val>=>=> value]> if> len>(key_list)>>0>:> >print>(>'The key for the value'>, value,>'is'>, key_list[>0>])> else>:> >print>(>'Value not found in dictionary'>)>

>

>

Sortida

The key for the value 112 is Python>

Complexitat temporal: O(N), on n és el nombre de parells clau-valor al diccionari.
Espai auxiliar: O(K) , on k és el nombre de claus que coincideixen amb el valor donat.

MÈTODE 6: Ús del mòdul re

El programa utilitza el mòdul re a Python per trobar la clau en un diccionari que correspon a un valor determinat. Crea un patró d'expressió regular que coincideix amb el valor envoltat de límits de paraula i, a continuació, utilitza la funció next() per iterar sobre els elements del diccionari i cercar un valor que coincideixi amb el patró. Si es troba una coincidència, el programa retorna la clau corresponent.

ALGORITME:

  1. Creeu un patró d'expressió regular que coincideixi amb el valor que estem buscant, envoltat de límits de paraules.
  2. Utilitzeu la funció next() per iterar sobre els elements del diccionari, cercant un valor que coincideixi amb el patró.
  3. Si es troba una coincidència, retorneu la clau corresponent. En cas contrari, retorneu Cap.

Python 3




import> re> # Given input> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 100> # Program code> pattern>=> re.>compile>(r>''> +> str>(value)>+> r>''>)> key>=> next>((k>for> k, v>in> my_dict.items()>if> pattern.search(>str>(v))),>None>)> print>(key)>

quan va sortir la victòria 7
>

>

Sortida

Java>

Complexitat temporal: O(N), La creació del patró d'expressió regular necessita temps O(1). La cerca d'un valor que coincideixi amb el patró de cada element del diccionari requereix O(n) temps en el pitjor dels casos, on n és el nombre d'elements del diccionari. La funció next() i la instrucció if triguen O(1) temps. Per tant, la complexitat temporal global del programa és O(n).

Espai auxiliar: O(1), El patró d'expressió regular i la variable clau requereixen espai O(1). La variable de patró i l'expressió generadora dins de la funció next() requereixen espai O(1). Les variables k i v utilitzades a l'expressió del generador no requereixen espai addicional, ja que es creen com a part de la iteració. Per tant, la complexitat espacial global del programa és O(1).