¿Cómo se puede imprimir una clave dado un valor en un diccionario para Python?

Por ejemplo, digamos que tenemos el siguiente diccionario:

dictionary = {'A':4, 'B':6, 'C':-2, 'D':-8} 

¿Cómo se puede imprimir una determinada clave dado su valor?

 print(dictionary.get('A')) #This will print 4 

¿Cómo puedes hacerlo al revés? es decir, en lugar de obtener un valor haciendo referencia a la clave, obteniendo una clave haciendo referencia al valor.

No creo que haya una manera de hacerlo. No es la forma en que se pretende utilizar un diccionario … En cambio, tendrás que hacer algo similar a esto.

 for key, value in dictionary.items(): if 4 == value: print key 

El diccionario está organizado por: clave -> valor

Si intentas ir: valor -> tecla

Entonces tienes algunos problemas; duplica, y también a veces un diccionario contiene objetos grandes (o imposibles de lavar) que no querría tener como clave.


Sin embargo, si aún desea hacer esto, puede hacerlo fácilmente iterando sobre las claves y los valores de los dicts y haciendo coincidirlos de la siguiente manera:

 def method(dict, value): for k, v in dict.iteritems(): if v == value: yield k # this is an iterator, example: >>> d = {'a':1, 'b':2} >>> for r in method(d, 2): print r b 

Como se señaló en un comentario, todo se puede escribir como una expresión generadora:

 def method(dict, value): return (k for k,v in dict.iteritems() if v == value) 

Nota sobre las versiones de Python: en Python 3+ puede usar dict.items() lugar de dict.iteritems()

En Python 3:

 # A simple dictionary x = {'X':"yes", 'Y':"no", 'Z':"ok"} # To print a specific key (for instancethe 2nd key which is at position 1) print([key for key in x.keys()][1]) 

Salida:

 Y 

Oye, estuve atascado en algo con esto durante años, todo lo que tienes que hacer es intercambiar la clave con el valor, por ejemplo.

 Dictionary = {'Bob':14} 

lo cambiarias a

 Dictionary ={1:'Bob'} 

o viceversa para establecer la clave como el valor y el valor como la clave para que pueda obtener lo que desea