对于不可散列值的 dict.items() 的“设置类似”行为

问题描述 投票:0回答:1

https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects

文档说:

如果所有值都是可散列的,因此(键,值)对是唯一且可散列的,那么项目视图也是类似集合的。

然而,不可散列的项目(列表)似乎确实支持“类似集合”的操作:

> {1:2, 3:4}.items() >= {1:2}.items()
True
> {1:[2], 3:4}.items() >= {1:[2]}.items()
True
> set({1:[2], 3:4}.items())
TypeError: unhashable type: 'list'

为什么这有效?可以依靠这种行为来正常工作吗?我还没有找到不正常的列表。

python dictionary set
1个回答
0
投票

我认为第二个文档是不正确的。字典的

items
视图始终表现得像一个集合,因为它的内容是唯一的。我们知道是这种情况,因为所有键都是唯一的,并且项目始终是包含键的 2 元组。该实现不需要对元组的值部分进行哈希处理,对键进行哈希处理就足以有效地执行所有
set
操作。

© www.soinside.com 2019 - 2024. All rights reserved.