小能豆

为什么字典键支持列表减法但不支持元组减法?

py

据推测 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 类会尝试在这里迭代一个整数?这是否违反了 duck-typing 原则?


>>> dict.fromkeys(['0', '1', '01']).keys() - ('01',)
{'01'}
>>> dict.fromkeys(['0', '1', '01']).keys() - ['01',]
{'1', '0'}

阅读 14

收藏
2024-11-11

共1个答案

小能豆

据推测 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 类会尝试在这里迭代一个整数?这是否违反了 duck-typing 原则?


>>> dict.fromkeys(['0', '1', '01']).keys() - ('01',)
{'01'}
>>> dict.fromkeys(['0', '1', '01']).keys() - ['01',]
{'1', '0'}
2024-11-11