Майте на увазі, що ви зараз тестуєте ідентичність об'єкта ( is
повертається лише в тому True
випадку, якщо обидва операнди представлені одним і тим же об’єктом у пам'яті - це не завжди так, якщо два об'єкти порівнюються з рівними ==
). Якщо ви робите це навмисно, ви можете переписати свій код як
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"}
>>> 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'}
Тож ви, мабуть, хочете !=
замість цього is not
.