Je voudrais imprimer une clé de dictionnaire Python spécifique:
mydic = {}
mydic['key_name'] = 'value_name'
Je peux maintenant vérifier si mydic.has_key('key_name')
, mais ce que je voudrais faire, c'est imprimer le nom de la clé 'key_name'
. Bien sûr, je pourrais utiliser mydic.items()
, mais je ne veux pas que toutes les clés soient répertoriées, juste une clé spécifique. Par exemple, je m'attendrais à quelque chose comme ça (en pseudo-code):
print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
Existe-t-il une name_the_key()
méthode pour imprimer un nom de clé?
Edit:
OK, merci beaucoup les gars pour vos réactions! :) Je réalise que ma question n'est pas bien formulée et banale. Je suis juste devenu confus parce que j'ai réalisé key_name et que ce mydic['key_name']
sont deux choses différentes et j'ai pensé qu'il serait incorrect d'imprimer le key_name
contexte du dictionnaire. Mais en effet, je peux simplement utiliser le 'nom_clé' pour faire référence à la clé! :)
la source
Réponses:
Un dictionnaire a, par définition, un nombre arbitraire de clés. Il n'y a pas "la clé". Vous avez la
keys()
méthode, qui vous donne un pythonlist
de toutes les clés, et vous avez laiteritems()
méthode, qui renvoie des paires clé-valeur, doncVersion Python 3:
Vous avez donc une poignée sur les touches, mais elles ne signifient vraiment le sens que si elles sont couplées à une valeur. J'espère avoir compris votre question.
la source
.iteritems()
n'est plus pris en charge ....items()
. J'ai ajouté un exemple.items()
renvoie une liste en python 2.x.De plus, vous pouvez utiliser ....
la source
Hmm, je pense que ce que vous voudrez peut-être faire est d'imprimer toutes les clés du dictionnaire et leurs valeurs respectives?
Si oui, vous voulez ce qui suit:
Assurez-vous également d'utiliser les «+» au lieu de «». La virgule mettra chacun de ces éléments sur une ligne distincte je pense, où comme plus les mettra sur la même ligne.
la source
"is"
etkey
etc. Si vous utilisez,+
vous devez mettre le rembourrage supplémentaire dans les chaînes. De plus, la clé et la valeur ne sont pas nécessairement des chaînes, auquel cas la virgule utilisera str (clé) et str (valeur) alors que+
cela provoquera une erreurRemarque: Dans Python 3, dic.iteritems () a été renommé en dic.items ()
la source
Le nom de la clé 'key_name' est donc key_name,
print 'key_name'
ou n'importe quelle variable que vous avez représentant.la source
En Python 3:
la source
Puisque nous essayons tous de deviner ce que "imprimer un nom de clé" pourrait signifier, je vais essayer. Vous souhaitez peut-être une fonction qui prend une valeur dans le dictionnaire et trouve la clé correspondante? Une recherche inversée?
Notez que de nombreuses clés peuvent avoir la même valeur, donc cette fonction renvoie une clé ayant la valeur, peut-être pas celle que vous vouliez.
Si vous devez le faire fréquemment, il serait judicieux de construire le dictionnaire inversé:
la source
iteritems
àitems
, alors comme indiqué à l'origine, cette réponse ne renverra que la première clé - s'il existe plusieurs correspondances. Pour résoudre ce problème, créez une liste vide avant lefor loop
(values_list = []
), puis ajoutez des clés à cette liste (values_list.append(k)
), dans laif
boucle. Enfin, déplacez l'instruction return (return values_list
) en dehors de lafor
boucle.Ou vous pouvez le faire de cette manière:
la source
Edit: mis à jour pour les chaînes f de python 3 ...
la source
Assurez-vous de faire
la source
Quel est le problème avec l'utilisation à la
'key_name'
place, même s'il s'agit d'une variable?la source
la source
la source
Probablement le moyen le plus rapide de récupérer uniquement le nom de la clé:
Résultat:
Convertit le
dictionary
en unlist
puis il répertorie le premier élément qui est le toutdict
puis il répertorie la première valeur de cet élément qui est:key_name
la source
J'ai recherché cette question, car je voulais savoir comment récupérer le nom de "la clé" si mon dictionnaire n'avait qu'une seule entrée. Dans mon cas, la clé m'était inconnue et pouvait être un certain nombre de choses. Voici ce que j'ai trouvé:
la source
Essaye ça:
la source
la source
Si vous souhaitez obtenir la clé d'une valeur unique, les éléments suivants pourraient vous aider:
De manière pythonique:
la source
J'ajoute cette réponse car l'une des autres réponses ici ( https://stackoverflow.com/a/5905752/1904943 ) est datée (Python 2;
iteritems
), et le code présenté - s'il est mis à jour pour Python 3 selon la suggestion solution de contournement dans un commentaire à cette réponse - échoue silencieusement à renvoyer toutes les données pertinentes.Contexte
J'ai quelques données métaboliques, représentées dans un graphe (nœuds, arêtes, ...). Dans une représentation par dictionnaire de ces données, les clés sont de la forme
(604, 1037, 0)
(représentant les nœuds source et cible, et le type de bord), avec des valeurs de la forme5.3.1.9
(représentant les codes enzymatiques EC).Rechercher des clés pour des valeurs données
Le code suivant trouve correctement mes clés, avec des valeurs données:
alors que ce code ne renvoie que les premières clés (éventuellement de plusieurs correspondances):
Le code - ci, mis à jour en remplaçant naïve
iteritems
avecitems
, ne retourne pas(604, 3936, 0), (1037, 3936, 0
.la source
Pour accéder aux données, vous devez procéder comme suit:
Ou, pour accéder à la valeur que vous venez d'appeler à partir de la clé:
foo[bar]
la source