logo

Pitón | Obtener clave del valor en el diccionario

Veamos cómo obtener la clave por valor en el Diccionario Python.

Ejemplo: código de una sola línea



Python3








# 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>)])>

frijol java
>

>

Producción:

Java>

Extraiga la clave del diccionario de Python usando el valor

Método 1: obtener la clave por valor mediante comprensión de listas

Una lista por comprensión consta de corchetes que contienen la expresión, que se ejecuta para cada elemento junto con el bucle for para iterar sobre cada elemento en la lista de Python para obtener la clave de un valor en Diccionario .

Python3




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

>

los números del alfabeto
>

Producción:

key by value: {'for'}>

Complejidad del tiempo: EN)
Espacio Auxiliar: O(1)

Método 2: Obtenga la clave por valor usando list.index()

El método índice() devuelve el índice del valor correspondiente en una lista. El enfoque utilizado aquí es encontrar dos listas separadas de claves y valores. Luego busca la clave usando el posición del valor en la lista_val. Como clave en cualquier posición N en key_list tendrá un valor correspondiente en la posición N en val_list.

Python3




# 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])>

>

>

Producción:

java>

Complejidad del tiempo: O(1)
Espacio auxiliar: O(1)

Método 3: Obtenga la clave por valor usando dict.item()

También podemos obtener la clave de un valor haciendo coincidir todos los valores usando dict.item() y luego imprimiendo la clave correspondiente al valor dado.

Python3




# 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>))>

>

>

clasificación de lista de matrices java
Producción

Java C>

Complejidad del tiempo: O (n), donde n es el número de pares clave-valor en el diccionario.
Espacio auxiliar: O(1), ya que el espacio utilizado por la función no depende del tamaño del diccionario de entrada.

Método 4: usar lambda y filter()

A continuación se muestra un ejemplo del uso de la función filter() para obtener la clave correspondiente a un valor en un diccionario:

Python3




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>

>

>

Producción

Java>

En este ejemplo, la función filter() se utiliza para crear una lista de claves de my_dict donde el valor es igual a 100. La lista resultante luego se indexa en la posición 0 para obtener el primer elemento, que es la clave correspondiente al valor. 100.

Complejidad del tiempo: O (n) , ya que la función filter() necesita recorrer todo el diccionario para crear la lista de claves.
El espacio auxiliar es O(n) , ya que la lista de claves creada por filter() tiene un tamaño igual al número de elementos del diccionario.

MÉTODO 5: Uso del método de elementos

Este código encuentra la clave de un valor dado en un diccionario usando una lista de comprensión para iterar sobre los elementos en el diccionario y verificar si el valor coincide con el valor dado. Si se encuentra una clave, se agrega a una lista y el primer elemento de la lista se imprime como clave para el valor dado. Si el valor no se encuentra en el diccionario, se imprime un mensaje indicando que no se encontró.

Pasos:

carnero potineni
  1. Utilice el método items del diccionario para recorrer cada par clave-valor en my_dict.
  2. Compruebe si el valor asociado con la clave actual es igual al valor dado.
  3. Si es igual, agregue la clave actual a una lista de claves.
  4. Si el ciclo se completa sin encontrar un valor coincidente, imprima un mensaje indicando que no se encontró el valor.
  5. Si se encontró una clave coincidente, imprima la primera clave de la lista.

Python3




# 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'>)>

>

>

Producción

The key for the value 112 is Python>

Complejidad del tiempo: O (N), donde n es el número de pares clave-valor en el diccionario.
Espacio auxiliar: O(K) , donde k es el número de claves que coinciden con el valor dado.

eliminando de la lista de matrices

MÉTODO 6: Uso del módulo re

El programa utiliza el módulo re en Python para encontrar la clave en un diccionario que corresponde a un valor determinado. Crea un patrón de expresión regular que coincide con el valor rodeado por los límites de las palabras, luego usa la función next() para iterar sobre los elementos en el diccionario y buscar un valor que coincida con el patrón. Si se encuentra una coincidencia, el programa devuelve la clave correspondiente.

ALGORITMO:

  1. Crea un patrón de expresión regular que coincida con el valor que estamos buscando, rodeado por límites de palabras.
  2. Utilice la función next() para iterar sobre los elementos del diccionario, buscando un valor que coincida con el patrón.
  3. Si se encuentra una coincidencia, devuelva la clave correspondiente. De lo contrario, devuelva Ninguno.

Python3




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)>

>

>

Producción

Java>

Complejidad del tiempo: O (N), Crear el patrón de expresión regular lleva O(1) tiempo. La búsqueda de un valor que coincida con el patrón en cada elemento del diccionario lleva O(n) tiempo en el peor de los casos, donde n es el número de elementos en el diccionario. La función next() y la declaración if toman cada una O(1) tiempo. Por lo tanto, la complejidad temporal general del programa es O (n).

Espacio auxiliar: O(1), El patrón de expresión regular y la variable clave requieren cada uno de ellos espacio O(1). La variable de patrón y la expresión del generador dentro de la función next() requieren espacio O(1). Las variables k y v utilizadas en la expresión del generador no requieren espacio adicional, ya que se crean como parte de la iteración. Por lo tanto, la complejidad espacial general del programa es O(1).