Tenga en cuenta que actualmente está realizando una prueba de la identidad del objeto (is
sólo se devuelve True
si ambos operandos son representados por el mismo objeto en la memoria - esto no es siempre el caso con dos objetos que se compara con igual ==
). Si usted está haciendo esto a propósito, entonces se podría reescribir su código como
some_dict = {key: value for key, value in some_dict.items()
if value is not value_to_remove}
pero esto no puede hacer lo que quiera:
>>> 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'}
Así que probablemente quieren !=
en lugar de is not
.
La razón para prohibir subrayado mutando dict al iterar es porque internamente hay una orden para la iteración, si mutar las teclas, el orden sería socavada, lo que da como resultado un comportamiento desconocido. – 8090PZ
Posible duplicado de [¿Cómo eliminar una clave de un diccionario de Python?] (Http://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary) – tripleee