Это гораздо более "питонический" способ:
>>> d = { "foo": set(["a", "b"]), "bar": set(["b", "c"]) }
>>> d['foo']-=d['bar']
>>> d
{'foo': set(['a']), 'bar': set(['c', 'b'])}
Конечно, d['foo']
может быть d[hashable_key]
с hashable_key, имеющим пользовательский ввод или что у вас.
Напомним, что операторы - & ^ |
в наборах перегружены для соответствующих методов мутирования:
a_set.difference_update(other_set) # also "-"
a_set.intersection_update(other_set) # also "&"
a_set.symmetric_difference_update(other_set) # also "^"
a_set.update(other_set) # also "-"
Затем можно использовать расширенное присвоение -=
для измененияустановленное значение 'foo' на месте.Все эти другие решения, предлагаемые здесь, кажутся мне слишком многословными.
Редактировать Я неправильно прочитал ОП и игнорирую это как ответ.Я проголосовал за лучшее решение .