54 votes

Conserver toutes les entrées sauf une clé python

J'ai un dictionnaire python. Juste pour donner le contexte, j'essaie d'écrire ma propre unité simple de validation croisée.

En gros, ce que je veux, c'est obtenir toutes les valeurs à l'exception des clés données. Et en fonction de l'entrée, il renvoie toutes les valeurs d'un dictionnaire sauf celles qui ont été données.

Donc, si l'entrée est 2 et 5, les valeurs de sortie n'ont pas les valeurs des clés 2 et 5 ?

52voto

Samus_ Points 1011
for key, value in your_dict.items():
    if key not in your_blacklisted_set:
        print value

la beauté de la chose est que cet exemple de pseudocode est du code python valide.

elle peut également être exprimée sous la forme d'une compréhension de liste :

resultset = [value for key, value in your_dict.items() if key not in your_blacklisted_set]

15voto

joel3000 Points 514

Juste pour s'amuser avec des ensembles

keys = set(dict.keys())
excludes = set([...])

for key in keys.difference(excludes):
    print dict[key]

14voto

Dendrobates Points 674

Si votre objectif est de retourner un nouveau dictionnaire, avec toutes les clés/valeurs sauf une ou quelques unes, utilisez ce qui suit :

exclude_keys = ['exclude', 'exclude2']
new_d = {k: d[k] for k in set(list(d.keys())) - set(exclude_keys)}

donde 'exclude' peut être remplacé par (une liste de) clé(s) à exclure.

9voto

Darren McAffee Points 415
keys = ['a', 'b']
a_dict = {'a':1, 'b':2, 'c':3, 'd':4}
[a_dict.pop(key) for key in keys]

Après avoir sorti les clés à jeter, a_dict conservera celles que vous recherchez.

8voto

Abhijit Points 24122

Étant donné un dictionnaire, disons

d = {
     2: 2, 5: 16, 6: 5,
     7: 6, 11: 17, 12: 9,
     15: 18, 16: 1, 18: 16,
     19: 17, 20: 10
     }

alors l'exemple de la simple compréhension permettrait d'obtenir ce que vous désirez.

[v for k,v in d.iteritems() if k not in (2,5)]

Cet exemple liste toutes les valeurs qui n'ont pas les clés {2,5}.

par exemple l'O/P de la compréhension ci-dessus est

[5, 6, 1, 17, 9, 18, 1, 16, 17, 10]

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