据推测 dict_keys 应该表现得像一个集合对象,但它们缺少difference方法并且减法行为似乎有所不同。
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 类会尝试在这里迭代一个整数?这是否违反了 duck-typing 原则?
>>> dict.fromkeys(['0', '1', '01']).keys() - ('01',) {'01'} >>> dict.fromkeys(['0', '1', '01']).keys() - ['01',] {'1', '0'}