Comment imprimer la clé d'un dictionnaire?
J'ai trouvé ma question dans SO déjà, mais il n'a pas été répondu directement. Je voudrais imprimer une clé de dictionnaire Python spécifique:
mydic = {}
mydic['key_name'] = 'value_name'
Maintenant, je peux vérifier si mydic.has_key('key_name')
, mais ce que je voudrais faire est d'imprimer le nom de la clé 'key_name'
. Bien sûr, je pourrais utiliser mydic.items()
, mais je ne veux pas tous les les clés répertoriés, simplement une clé spécifique. Par exemple, je m'attends à quelque chose comme ceci (en pseudo-code):
print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
Est-il name_the_key()
méthode pour imprimer une clé nom?
Modifier:
OK, merci beaucoup les gars pour vos réactions! :) Je me rends compte que ma question n'est pas bien formulée et triviale. Je suis juste confus parce que j'ai réalisé que key_name et mydic['key_name']
sont deux choses différentes et je pensais qu'il serait incorrect d'imprimer le key_name
hors du contexte du dictionnaire. Mais en effet, je peux simplement utiliser le 'key_name' pour faire référence à la clé! :)
17 réponses
Un dictionnaire a, par définition, un nombre arbitraire de clés. Il n'existe pas de "la clé". Vous avez la méthode keys()
, qui vous donne un python list
de toutes les clés, et vous avez la méthode iteritems()
, qui renvoie des paires clé-valeur, donc
for key, value in mydic.iteritems() :
print key, value
Version Python 3:
for key, value in mydic.items() :
print (key, value)
Vous avez donc un handle sur les clés, mais elles ne signifient vraiment un sens que si elles sont couplées à une valeur. J'espère avoir bien compris votre question.
Hmm, je pense que ce que vous pourriez vouloir faire est d'imprimer tous les les clés dans le dictionnaire et leurs valeurs respectives?
Si c'est le cas, vous voulez ce qui suit:
for key in mydic:
print "the key name is" + key + "and its value is" + mydic[key]
Assurez-vous que vous utilisez +'s au lieu de ,' ainsi. La virgule mettra chacun de ces éléments sur une ligne séparée, je pense, où as plus les mettra sur la même ligne.
En Outre, vous pouvez utiliser....
print(dictionary.items()) #prints keys and values
print(dictionary.keys()) #prints keys
print(dictionary.values()) #prints values
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
Remarque:En Python 3, dic.iteritems() a été renommé en dic.points()
Le nom de la clé 'key_name' est key_name, donc print 'key_name'
ou n'importe quelle variable que vous avez représentant.
Puisque nous essayons tous de deviner ce que" imprimer un nom de clé " pourrait signifier, je vais le poignarder. Peut-être voulez-vous une fonction qui prend une valeur du dictionnaire et trouve la clé correspondante? Une recherche inversée?
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
Notez que de nombreuses clés peuvent avoir la même valeur, donc cette fonction renverra une clé ayant la valeur, peut-être pas celle que vous vouliez.
Si vous devez le faire fréquemment, il serait logique de construire l'inverse de dictionnaire:
d_rev = dict(v,k for k,v in d.iteritems())
Ou vous pouvez le faire de cette manière:
for key in my_dict:
print key, my_dict[key]
Quel est le problème avec l'utilisation de 'key_name'
à la place, même si c'est une variable?
# 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
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)
Probablement le moyen le plus rapide de récupérer uniquement le nom de la clé:
mydic = {}
mydic['key_name'] = 'value_name'
print mydic.items()[0][0]
Résultat:
key_name
Convertit le dictionary
en list
, puis il affiche le premier élément qui est l'ensemble dict
, puis il énumère la première valeur de cet élément qui est: key_name
Essayez ceci:
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
key_name = '...'
print "the key name is %s and its value is %s"%(key_name, mydic[key_name])
Si vous voulez obtenir la clé d'une seule valeur, ce qui suit vous aidera:
def get_key(b): # the value is passed to the function
for k, v in mydic.items():
if v.lower() == b.lower():
return k
En mode pythonique:
c = next((x for x, y in mydic.items() if y.lower() == b.lower()), \
"Enter a valid 'Value'")
print(c)
J'ai regardé cette question, parce que je voulais savoir comment faire pour récupérer le nom de "la clé" si mon dictionnaire n'avait qu'une seule entrée. Dans mon cas, la clé était inconnue pour moi et pourrait être un certain nombre de choses. Voici ce que je suis venu avec:
dict1 = {'random_word': [1,2,3]}
key_name = str([key for key in dict1]).strip("'[]'")
print(key_name) # equal to 'random_word', type: string.
Assurez-vous de faire
dictionary.keys()
# rather than
dictionary.keys