Tengo el siguiente diccionario en python:
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
Necesito una manera de encontrar si existe un valor como "uno" o "dos" en este diccionario.
Por ejemplo, si quisiera saber si el índice "1" existía, simplemente tendría que escribir:
"1" in d
Y luego Python me diría si eso es verdadero o falso, sin embargo, necesito hacer exactamente lo mismo, excepto para encontrar si existe un valor.
python
dictionary
find
JimmyK
fuente
fuente
d
, los tiempos carecen de sentido. En Python 3,dict.values()
es una vista de diccionario, por defecto, ydict.itervalues()
ya nodict.viewvalues()
están. Puede volver a probar esto (con un diccionario más grande) y usarlist(d.values())
para obtener el comportamiento de Python 2, yiter(d.values())
para obtener eldict.itervalues()
comportamiento, pero debido a que ambas versiones requieren una búsqueda y llamada global, serán absolutamente más lentas. Ambos hacen un trabajo extra que no es necesario.Puedes usar
para probar si
"one"
está entre los valores de tu diccionario.fuente
Diccionario de Python tiene get (clave) del funcion
Por ejemplo,
Si su clave no existe, devolverá el
none
valor.Contenido relevante para versiones inferiores a 3.0 y superiores a 5.0. .
fuente
key:value
y no clave.Usar vistas de diccionario:
fuente
Existen diferentes tipos para verificar los valores
¿Qué pasa si la lista de valores
¿Qué pasa si la lista de valores con valores de cadena
fuente
value in [... list comprehension over sequence ...]
, useany(value in sequence ...)
, para evitar crear un objeto de lista que no use para otra cosa, y hacer un cortocircuito cuando se encuentre el valor.En Python 3 puedes usar la
values()
función del diccionario. Devuelve un objeto de vista de los valores. Esto, a su vez, se puede pasar a laiter
función que devuelve un objeto iterador. El iterador se puede verificar usandoin
, de esta manera,O puede usar el objeto de vista directamente ya que es similar a una lista
fuente
iter()
en una vista de diccionario;in
ya usará el objeto como iterable (el tipo no implementa un__contains__
método dedicado ). La única diferencia entre'one' in iter(d.values())
y'one in d.values()
es que hizo que Python hiciera un trabajo extra (pagando el costo de una búsqueda globaliter
).