python - usar - Cómo imprimir la clave de un diccionario?
sintaxis diccionario en python (17)
Ya encontré mi pregunta en SO, pero no fue respondida directamente. Me gustaría imprimir una clave de diccionario de 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, podría usar mydic.items()
, pero no quiero todas las claves enumeradas, simplemente una clave específica. Por ejemplo, esperaría algo como esto (en pseudo-código):
print "the key name is", mydic[''key_name''].name_the_key(), "and its value is", mydic[''key_name'']
¿Hay algún método name_the_key()
para imprimir un nombre de clave?
Editar: OK, muchas gracias muchachos por sus reacciones! :) Me doy cuenta de que mi pregunta no está bien formulada y es trivial. Me confundí porque me di cuenta de que key_name y mydic[''key_name'']
son dos cosas diferentes y pensé que sería incorrecto imprimir el key_name
fuera del contexto del diccionario. ¡Pero de hecho puedo usar simplemente ''key_name'' para referirme a la clave! :)
¿Qué hay de malo con usar ''key_name''
lugar, incluso si es una variable?
Además, puedes usar ...
print(dictionary.items()) #prints keys and values
print(dictionary.keys()) #prints keys
print(dictionary.values()) #prints values
Asegúrate de hacer
dictionary.keys()
# rather than
dictionary.keys
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. Aquí es lo que se me ocurrió:
dict1 = {''random_word'': [1,2,3]}
key_name = str([key for key in dict1]).strip("''[]''")
print(key_name) # equal to ''random_word'', type: string.
Como todos intentamos adivinar lo que podría significar "imprimir un nombre de clave", lo intentaré. ¿Quizás desea una función que toma un valor del diccionario y encuentra la clave correspondiente? Una búsqueda inversa?
def key_for_value(d, value):
"""Return a key in `d` having a value of `value`."""
for k, v in d.iteritems():
if v == value:
return k
Tenga en cuenta que muchas teclas pueden tener el mismo valor, por lo que esta función devolverá alguna clave que tenga el valor, quizás no la que usted tenía la intención.
Si necesita hacer esto con frecuencia, tendría sentido construir el diccionario inverso:
d_rev = dict(v,k for k,v in d.iteritems())
El nombre de la clave ''key_name'' es key_name, por lo tanto, print ''key_name''
o cualquier variable que tengas que lo represente.
Hmm, creo que lo que querrías hacer es imprimir todas las claves en el diccionario y sus respectivos valores?
Si es así, quiere lo siguiente:
for key in mydic:
print "the key name is" + key + "and its value is" + mydic[key]
Asegúrate de usar + ''s en lugar de'' también. La coma pondrá cada uno de esos elementos en una línea separada, creo, donde como más los pondrá en la misma línea.
O puedes hacerlo de esa manera:
for key in my_dict:
print key, my_dict[key]
Probablemente la forma más rápida de recuperar solo el nombre de la clave:
mydic = {}
mydic[''key_name''] = ''value_name''
print mydic.items()[0][0]
Resultado:
key_name
Convierte el dictionary
en una list
luego enumera el primer elemento, que es el dict
completo, y luego enumera el primer valor de ese elemento, que es: key_name
Prueba esto:
def name_the_key(dict, key):
return key, dict[key]
mydict = {''key1'':1, ''key2'':2, ''key3'':3}
key_name, value = name_the_key(mydict, ''key2'')
print ''KEY NAME: %s'' % key_name
print ''KEY VALUE: %s'' % value
Si quiere obtener la clave de un valor único, lo siguiente sería útil:
def get_key(b): # the value is passed to the function
for k, v in mydic.items():
if v.lower() == b.lower():
return k
De manera pitonica:
c = next((x for x, y in mydic.items() if y.lower() == b.lower()), /
"Enter a valid ''Value''")
print(c)
Un diccionario tiene, por definición, un número arbitrario de claves. No hay "la llave". Tiene el método keys()
, que le proporciona una list
python de todas las claves, y tiene el método iteritems()
, que devuelve pares clave-valor, por lo que
for key, value in mydic.iteritems() :
print key, value
Versión Python 3:
for key, value in mydic.items() :
print (key, value)
Así que tienes un control sobre las teclas, pero solo significan sentido si se combinan con un valor. Espero haber entendido tu pregunta.
# highlighting how to use a named variable within a string:
dict = {''a'': 1, ''b'': 2}
# simple method:
print "a %(a)s" % dict
print "b %(b)s" % dict
# programmatic method:
for key in dict:
val = ''%(''+key+'')s''
print key, val % dict
# yields:
# a 1
# b 2
# using list comprehension
print "/n".join(["%s: %s" % (key, (''%(''+key+'')s'') % dict) for key in dict])
# yields:
# a: 1
# b: 2
dic = {"key 1":"value 1","key b":"value b"}
#print the keys:
for key in dic:
print key
#print the values:
for value in dic.itervalues():
print value
#print key and values
for key, value in dic.iteritems():
print key, value
dict = {''name'' : ''Fred'', ''age'' : 100, ''employed'' : True }
# Choose key to print (could be a user input)
x = ''name''
if x in dict.keys():
print(x)
import pprint
pprint.pprint(mydic.keys())
key_name = ''...''
print "the key name is %s and its value is %s"%(key_name, mydic[key_name])