2010-08-23 8 views
135

Disculpe esta pregunta básica, pero mis búsquedas sobre este tema no muestran otra cosa que no sea cómo obtener la clave de un diccionario en función de su valor, que prefiero no usar porque simplemente quiero el texto/nombre de la clave y estoy preocupado que la búsqueda de valor puede terminar volviendo 2 o más teclas si el diccionario tiene una gran cantidad de entradas ... lo que yo estoy tratando de hacer es lo siguiente:¿Cómo puedo obtener la clave del diccionario como variable directamente en Python (no buscando desde el valor)?

mydictionary={'keyname':'somevalue'} 
for current in mydictionary: 

    result = mydictionary.(some_function_to_get_key_name)[current] 
    print result 
    "keyname" 

la razón de esto es que estoy imprimiendo estos fuera a un documento y quiero utilizar el nombre de la clave y el valor en hacer esto

He visto el método a continuación, pero esto parece simplemente devolver el valor de la clave

get(key[, default]) 
+0

¿Simplemente desea comprobar que 'keyname' existe en el diccionario? Porque * ya * lo tienes. – relet

+1

no como dije, necesita imprimirlo, sería iterar a través de un gran número de claves – Rick

+0

'actual'es la clave actual, simplemente haga' imprimir actual' – Moberg

Respuesta

182

Usted debe iterar sobre las claves con:

for key in mydictionary: 
    print "key: %s , value: %s" % (key, mydictionary[key]) 
+6

Puedes escribir 'for key in mydictionary:' – blokeley

+3

en python 3.6: 'print (tecla f: {key}, value: {mydictionary [key]}") ' – JinSnow

72

Si desea imprimir clave y el valor, utilice la siguiente:

for key, value in my_dict.iteritems(): 
    print key, value 
+3

Para Python 3: items () en lugar de iteritems() – toshiro92

66

The reason for this is that I am printing these out to a document and I want to use the key name and the value in doing this

Basado en el requisito anterior esto es lo que sugeriría:

keys = mydictionary.keys() 
keys.sort() 

for each in keys: 
    print "%s: %s" % (each, mydictionary.get(each)) 
+0

Prefiero las otras respuestas como el ciclo for en 'my_dict.item()' o la comprensión de lista como 'keys = list (my_dict.keys)' pero por si alguien quiere hacer esto en Python 3 : (línea 2) 'keys = ordenados (my_dict.keys())' + add() para imprimir. – Honiix

8

keys=[i for i in mydictionary.keys()] o keys = list(mydictionary.keys())

+0

Asegúrate de usar etiquetas de código y explica tu respuesta también. – Chrismas007

5

iterar sobre diccionario (i) devolverá la clave, a continuación, volver a utilizarla (i) para obtener el valor

for i in D: 
    print "key: %s, value: %s" % (i, D[i]) 
20

Si el diccionario contiene un par de esta manera:

d = {'age':24} 

entonces se puede obtener como

field, value = d.items()[0] 

Para Python 3.5, haga lo siguiente:

key = list(d.keys())[0] 
+4

Python3.5: 'TypeError: 'objeto de dict_items' no admite indexación' – Sinux

+0

bastante hackish pero d .__ iter __() .__ next __() hace un truco. obtienes 'edad'. Obtiene el mismo resultado con este d.items() .__ iter __() .__ next __() [0]. – yoshi

+2

En Python3, esto funciona para un par de dicts: 'key = list (d.keys()) [0]' –

3

para Python 3 Si desea obtener sólo las teclas usan este. Reemplace la impresión (clave) con impresión (valores) si desea los valores.

for key,value in my_dict: 
    print(key) 
6

Tan simple como eso:

mydictionary={'keyname':'somevalue'} 
result = mydictionary.popitem()[0] 

Usted hará su diccionario y debe hacer una copia de la misma

3

Lo que a veces hago es crear otro diccionario sólo para poder lo que siento Necesito acceder como una cadena. Luego iteraré sobre varios diccionarios que coinciden con las claves para compilar, p. una tabla con la primera columna como descripción.

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'} 
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items(): 
    print('{0} {1}'.format(dict_names[key], dict_values[key]) 

Usted puede hacer una enorme cantidad de diccionarios para que coincida con los datos (me gusta el hecho de que con el diccionario siempre se puede hacer referencia a algo conocido como el nombre de clave)

sí lo usan diccionarios para almacenar los resultados de las funciones, así que no necesito ejecutar estas funciones cada vez que las llamo solo una vez y luego accedo a los resultados en cualquier momento.

EDITAR: en mi ejemplo, el nombre de la clave realmente no importa (personalmente me gusta usar los mismos nombres de clave ya que es más fácil elegir un solo valor de cualquiera de mis diccionarios coincidentes), solo asegúrese de que el número de claves en cada diccionario es el mismo

Cuestiones relacionadas