58 votes

Comment filtrer les clés de dictionnaire en fonction de ses valeurs correspondantes

J'espère que la question que j'ai ici est relativement simple à résoudre.

J'ai mon dictionnaire:

dictionary = {"foo":12, "bar":2, "jim":4, "bob": 17}

Ce que je voudrais faire est de parcourir le dictionnaire, mais sur les valeurs au lieu de les touches, donc je peux utiliser les valeurs d'une autre fonction.

Par exemple, je veux tester le dictionnaire valeurs sont supérieures 6, puis stocker les clés dans une liste. mon code pour le moment ressemble à ceci:

list = []
for c in dictionary:
    if c > 6:
        list.append(dictionary[c])
print list

et puis, dans un monde parfait, la liste de toutes les touches qui est de la valeur était supérieure à 6. toutefois, pour le moment, toute ma boucle for est une itération sur les touches, et j'aimerais changer pour que les valeurs!

toute aide est grandement appréciée. merci

82voto

jamylak Points 38094
>>> d = {"foo": 12, "bar": 2, "jim": 4, "bob": 17}
>>> [k for k, v in d.items() if v > 6] # Use d.iteritems() on python 2.x
['bob', 'foo']

36voto

Sionide21 Points 1301

Pour obtenir uniquement les valeurs, utilisez dictionary.values()

Pour obtenir des paires clé-valeur, utilisez dictionary.items()

10voto

Vikas Points 3756

Utilisez items ou iteritems sur le dictionnaire. Quelque chose comme:

 list = []
for k, v in dictionary.iteritems():
  if v > 6:
    list.append(k)
print list
 

4voto

Pablo Santa Cruz Points 73944

Que dis-tu de ça:

 dictionary = {"foo":12, "bar":2, "jim":4, "bob": 17}
for val in dictionary.values():
    # do something
 

2voto

uhz Points 958

Cela dépend si vous souhaitez modifier le dictionnaire (ajouter ou supprimer des éléments) ou non. Sinon, vous pouvez essayer:

 for value in dictionary.itervalues():  #this returns a generator
     print "do something with the value"
 

Alternativement, si vous modifiez le dictionnaire, vous devriez parcourir une copie des valeurs:

 for value in dictionary.values():  #this returns a list of values
     print "do something with the value"
 

Si vous souhaitez à la fois les clés et les valeurs, vous pouvez effectuer une itération sur des paires en utilisant dictionary.iteritems() ou dictionary.items()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X