Me gustaría imprimir una clave de diccionario Python específica:
mydic = {}
mydic['key_name'] = 'value_name'
Ahora puedo verificar si mydic.has_key('key_name')
, pero lo que me gustaría hacer es imprimir el nombre de la clave 'key_name'
. Por supuesto que podría usar mydic.items()
, pero no quiero que se enumeren todas las claves, solo una clave específica. Por ejemplo, esperaría algo como esto (en pseudocódigo):
print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
¿Hay algún name_the_key()
método para imprimir un nombre clave?
Editar:
OK, muchas gracias por sus reacciones! :) Me doy cuenta de que mi pregunta no está bien formulada y es trivial. Me confundí porque me di cuenta de key_name y mydic['key_name']
son dos cosas diferentes y pensé que sería incorrecto imprimir key_name
fuera del contexto del diccionario. Pero, de hecho, ¡simplemente puedo usar 'key_name' para referirme a la clave! :)
fuente
Respuestas:
Un diccionario tiene, por definición, un número arbitrario de claves. No hay "la clave". Tienes el
keys()
método, que te da una pitónlist
de todas las claves, y tienes eliteritems()
método, que devuelve pares clave-valor, así queVersión de Python 3:
Por lo tanto, tiene un control sobre las teclas, pero solo significan sentido si se combinan con un valor. Espero haber entendido tu pregunta.
fuente
.iteritems()
que ya no es compatible ....items()
. Agregué un ejemplo.items()
devuelve una lista en python 2.x.Además puedes usar ....
fuente
Hmm, creo que lo que querrás hacer es imprimir todas las claves del diccionario y sus valores respectivos.
Si es así, quieres lo siguiente:
Asegúrate de usar también '+' en lugar de '. La coma colocará cada uno de esos elementos en una línea separada, creo, donde además los colocará en la misma línea.
fuente
"is"
ykey
etc. Si lo usa+
, debe colocar el relleno adicional en las cadenas. Además, la clave y el valor no son necesariamente una cadena, en cuyo caso la coma usará str (clave) y str (valor) mientras+
que causará un errorNota: En Python 3, dic.iteritems () fue renombrado como dic.items ()
fuente
El nombre de la clave 'key_name' es key_name, por
print 'key_name'
lo tanto, o cualquier variable que tenga que lo represente.fuente
En Python 3:
fuente
Como todos estamos tratando de adivinar lo que podría significar "imprimir un nombre clave", lo intentaré. ¿Quizás desee una función que tome un valor del diccionario y encuentre la clave correspondiente? ¿Una búsqueda inversa?
Tenga en cuenta que muchas teclas pueden tener el mismo valor, por lo que esta función devolverá alguna tecla que tenga el valor, tal vez no la que deseaba.
Si necesita hacer esto con frecuencia, tendría sentido construir el diccionario inverso:
fuente
iteritems
aitems
, entonces, como se mostró originalmente, esta respuesta solo devolverá la primera clave, si hay varias coincidencias. Para resolver esto, cree una lista en blanco antes defor loop
(values_list = []
), luego agregue claves a esta lista (values_list.append(k)
), en elif
bucle. Por último, mueva la declaración de retorno (return values_list
) fuera delfor
bucle.O puedes hacerlo de esa manera:
fuente
Editar: actualizado para las cadenas f de python 3 ...
fuente
Asegúrate de hacer
fuente
¿Qué hay de malo en usar
'key_name'
, incluso si es una variable?fuente
fuente
fuente
Probablemente la forma más rápida de recuperar solo el nombre de la clave:
Resultado:
Convierte el
dictionary
en un ylist
luego enumera el primer elemento que es el todo ydict
luego enumera el primer valor de ese elemento que es:key_name
fuente
Busqué esta pregunta, porque quería saber cómo recuperar el nombre de "la clave" si mi diccionario solo tenía una entrada. En mi caso, la clave era desconocida para mí y podría ser cualquier cantidad de cosas. Esto es lo que se me ocurrió:
fuente
Prueba esto:
fuente
fuente
Si desea obtener la clave de un valor único, lo siguiente sería útil:
De manera pitónica:
fuente
Estoy agregando esta respuesta como una de las otras respuestas aquí ( https://stackoverflow.com/a/5905752/1904943 ) está fechada (Python 2;
iteritems
) y el código presentado, si está actualizado para Python 3 según lo sugerido solución alternativa en un comentario a esa respuesta: silenciosamente no puede devolver todos los datos relevantes.Antecedentes
Tengo algunos datos metabólicos, representados en un gráfico (nodos, bordes, ...). En una representación de diccionario de esos datos, las claves son de la forma
(604, 1037, 0)
(que representan los nodos de origen y destino, y el tipo de borde), con valores de la forma5.3.1.9
(que representan los códigos de enzimas EC).Encuentra claves para valores dados
El siguiente código encuentra correctamente mis claves, valores dados:
mientras que este código devuelve solo la primera (posiblemente de varias claves coincidentes):
El último código, ingenuamente actualizado reemplazando
iteritems
conitems
, no puede regresar(604, 3936, 0), (1037, 3936, 0
.fuente
Para acceder a los datos, deberá hacer esto:
O, para acceder al valor, simplemente llámelo desde la clave:
foo[bar]
fuente