Soyez conscient que vous êtes en train de tester l'identité d'objet (is
renvoie uniquement True
si les deux opérandes sont représentés par le même objet en mémoire - ce n'est pas toujours le cas avec deux objets qui permettent de comparer l'égalité avec ==
). Si vous faites exprès, vous pouvez réécrire votre code comme
some_dict = {key: value for key, value in some_dict.items()
if value is not value_to_remove}
Mais cela peut ne pas faire ce que vous voulez:
>>> some_dict = {1: "Hello", 2: "Goodbye", 3: "You say yes", 4: "I say no"}
>>> value_to_remove = "You say yes"
>>> some_dict = {key: value for key, value in some_dict.items() if value is not value_to_remove}
>>> some_dict
{1: 'Hello', 2: 'Goodbye', 3: 'You say yes', 4: 'I say no'}
>>> some_dict = {key: value for key, value in some_dict.items() if value != value_to_remove}
>>> some_dict
{1: 'Hello', 2: 'Goodbye', 4: 'I say no'}
Donc, vous voulez probablement !=
au lieu de is not
.
La raison underline pour interdire dict muter en est parce itération interne il y a un ordre pour l'itération, si vous muter les clés, l'ordre serait compromis, ce qui entraîne un comportement inconnu. – 8090PZ
Copie possible de [Comment supprimer une clé d'un dictionnaire python?] (Http://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary) – tripleee