Obtención de la clave correspondiente a un valor en un diccionario

Los diccionarios en Python están diseñados para, dada una clave, poder obtener fácilmente el valor asociado. Pero hay ocasiones en las que podemos necesitar obtener la clave para un valor dado. En estos casos podemos utilizar el siguiente enfoque: Supongamos que tenemos un diccionario d.

d = {
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4
}

Ya sabemos que podríamos obtener el listado de claves y el de valores con las siguientes funciones:

claves = list(d.keys())
valores = list(d.values())

Supongamos que deseamos obtener la clave correspondiente al número 3. Podemos obtener el índice de éste número en la lista de valores con

list(d.values()).index(3)

...instrucción que, en nuestro ejemplo, nos devolverá el valor 2 (pues el número 3 ocupa la tercera posición en la lista, posición cuyo índice es 2). Y, una vez localizado el índice en la lista de valores, basta utilizar este índice en la lista de claves:

list(d.keys())[list(d.values()).index(3)]

En un caso general, si estamos buscando la clave correspondiente al valor v en el diccionario d, el código sera:

list(d.keys())[list(d.values()).index(v)]

Lógicamente, esto funciona si el valor buscado solo aparece una vez en la lista de valores. En cualquier otro caso estaríamos obteniendo la clave correspondiente a la primera aparición del valor en la lista de valores, lo que no tiene porqué ser lo que buscamos.

Código completo:

Obtención de la clave correspondiente a un valor en un diccionario