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é! :)

150
demandé sur ivanleoncz 2011-05-06 02:51:16

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.

272
répondu juanchopanza 2013-03-27 22:58:15

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.

30
répondu Dominic Santos 2017-06-24 12:31:51

En Outre, vous pouvez utiliser....

print(dictionary.items()) #prints keys and values
print(dictionary.keys()) #prints keys
print(dictionary.values()) #prints values
26
répondu Mason 2017-07-15 09:47:53
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()

26
répondu ademar111190 2018-05-18 15:14:28

Le nom de la clé 'key_name' est key_name, donc print 'key_name' ou n'importe quelle variable que vous avez représentant.

24
répondu zenna 2011-05-05 22:53:50

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())
6
répondu Ned Batchelder 2011-05-06 00:57:12

Ou vous pouvez le faire de cette manière:

for key in my_dict:
     print key, my_dict[key]
4
répondu Eugene Soldatov 2015-09-29 11:44:53

Quel est le problème avec l'utilisation de 'key_name' à la place, même si c'est une variable?

2
répondu Ry- 2011-05-05 22:54:35
import pprint
pprint.pprint(mydic.keys())
2
répondu Matt Joiner 2011-05-06 05:37:38
# 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
2
répondu Brian Bruggeman 2018-02-22 17:52:27
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)
1
répondu Rob Wilson 2015-06-17 10:54:26

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

1
répondu Fekete Sumér 2016-02-08 11:04:33

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
0
répondu fdb 2011-05-05 23:24:59
key_name = '...'
print "the key name is %s and its value is %s"%(key_name, mydic[key_name])
0
répondu Don 2011-05-06 08:49:40

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)
0
répondu Jeril 2015-11-06 09:01:13

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.
0
répondu PeaWagon 2017-01-27 18:53:08

Assurez-vous de faire

dictionary.keys()
# rather than
dictionary.keys
0
répondu Crt 2018-05-17 14:25:38