web-dev-qa-db-fra.com

Comment obtenir une clé de dictionnaire comme variable directement dans Python (sans chercher dans la valeur)?

Désolé pour cette question de base, mais mes recherches à ce sujet ne donnent rien d'autre que d'obtenir la clé d'un dictionnaire en fonction de sa valeur, ce que je préférerais ne pas utiliser, je veux simplement le texte/nom de la clé et je crains que la recherche par valeur peut finir par retourner 2 clés ou plus si le dictionnaire a beaucoup d'entrées ... Voici ce que j'essaie de faire:

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

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

La raison en est que je les imprime dans un document et que je souhaite utiliser le nom de la clé et la valeur correspondante.

J'ai vu la méthode ci-dessous mais cela semble simplement renvoyer la valeur de la clé

get(key[, default])
173
Rick

Vous devriez parcourir les clés avec:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])
220
systempuntoout

Si vous souhaitez imprimer la clé et la valeur, utilisez ce qui suit:

for key, value in my_dict.iteritems():
    print key, value
88
Escualo

La raison en est que je les imprime dans un document et que je souhaite utiliser le nom de la clé et la valeur correspondante.

Sur la base de l'exigence ci-dessus, voici ce que je suggérerais:

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

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))
78
Manoj Govindan

Si le dictionnaire contient une paire comme celle-ci:

d = {'age':24}

alors vous pouvez obtenir comme

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

Pour Python 3.5, procédez comme suit:

key = list(d.keys())[0]
38
Sudhin

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

12
kurian

Aussi simple que cela:

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

Vous allez modifier votre dictionnaire et devriez d'abord en faire une copie

8
Libert

Itérer sur le dictionnaire (i) retournera la clé, puis l'utilisera (i) pour obtenir la valeur

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

Vous pouvez simplement utiliser * qui décompresse les clés du dictionnaire. Exemple:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')
4
Georg

Ce que je fais parfois, c’est que je crée un autre dictionnaire simplement pour pouvoir accéder à ce que j’ai besoin d’accéder sous forme de chaîne. Ensuite, j'itère sur plusieurs dictionnaires des clés correspondantes pour construire, par exemple. une table avec la première colonne comme description.

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])

Vous pouvez facilement faire correspondre une grande quantité de dictionnaires de données (j'aime le fait qu'avec un dictionnaire, vous pouvez toujours vous référer à quelque chose de bien connu comme le nom de clé).

oui, j'utilise des dictionnaires pour stocker les résultats des fonctions. Je n'ai donc pas besoin de les exécuter à chaque fois que je les appelle une seule fois, puis d'accéder aux résultats à tout moment.

EDIT: dans mon exemple, le nom de clé n'a pas vraiment d'importance (j'aime personnellement utiliser les mêmes noms de clé car il est plus facile de choisir une seule valeur dans l'un de mes dictionnaires correspondants), assurez-vous simplement que le nombre de clés dans chaque dictionnaire est correct. le même

3
s3icc0

Pour python 3 Si vous voulez obtenir uniquement les clés, utilisez ceci. Remplacez print (key) par print (values) si vous voulez les valeurs.

for key,value in my_dict:
  print(key)
3
siddharth