Предположительно, dict_keys должны вести себя как объект, подобный множеству, но они не имеют метода difference
, и поведение вычитания, по-видимому, расходится.
>>> d = {0: 'zero', 1: 'one', 2: 'two', 3: 'three'}
>>> d.keys() - [0, 2]
{1, 3}
>>> d.keys() - (0, 2)
TypeError: 'int' object is not iterable
Почему класс dict_keys пытается перебрать целое число здесь? Разве это не нарушает утиную печать?
>>> dict.fromkeys(['0', '1', '01']).keys() - ('01',)
{'01'}
>>> dict.fromkeys(['0', '1', '01']).keys() - ['01',]
{'1', '0'}