236 votes

Supprimer un élément de dictionnaire si la clé existe

Est-il un autre moyen pour supprimer un élément dans un dictionnaire uniquement si la clé existe, autres que:

if key in mydict:
    del mydict[key]

Le scénario est que je me suis donné un ensemble de clés pour être retiré à partir d'un dictionnaire, mais je ne suis pas certain si tous existe pas dans le dictionnaire. Juste au cas où j'oublie de prendre une solution plus efficace.

507voto

Adem Öztaş Points 4007

Vous pouvez utiliser dict.pop:

 mydict.pop("key", None)

12voto

mgilson Points 92954

Il y a aussi:

try:
    del mydict[key]
except KeyError:
    pass

Cette seulement 1 recherche au lieu de 2. Toutefois, except clauses sont chers, donc si vous vous retrouvez à frapper l'exception de la clause fréquemment, ce sera probablement moins efficace que ce que vous avez déjà.

5voto

hughdbrown Points 15770

Approche: calculer les clés à supprimer, de muter dict

Appelons - keys de la liste/itérateur de touches qui vous est donné de le supprimer. Je ferais ceci:

keys_to_remove = set(keys).intersection(set(mydict.keys()))
for key in keys_to_remove:
    del mydict[key]

Vous calculez à l'avant de tous les éléments affectés et agir sur eux.

Approche: calculer les clés de garder, de faire de nouvelles dict avec ces touches de

Je préfère créer un nouveau dictionnaire de plus de la mutation d'un existant, alors je serais probablement aussi envisager ceci:

keys_to_keep = set(mydict.keys()) - set(keys)
new_dict = {k: v for k, v in mydict.iteritems() if k in keys_to_keep}

ou:

keys_to_keep = set(mydict.keys()) - set(keys)
new_dict = {k: mydict[k] for k in keys_to_keep}

0voto

Logan Points 1

Vous pouvez utiliser:

i=0
while i<len(mydict):
    if mydict[key]==x:
        del mydict[key]
    i+=1

Remarque: X est égale à la clé que vous souhaitez supprimer.

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