集合与虚拟仪器的区别

2024-06-26 19:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我学习Python已经一个多月了,我遇到了一个关于视图和集合的讨论。我正在使用的《学习Python》一书说,视图是iterable的,它们的对象的顺序与字典中的相同,但是视图也支持set操作。在

在我看来他们什么都能做。它看起来像鸭子,嘎嘎叫起来像鸭子,并且允许像鸭子一样进行set操作。为什么集合和视图是分开的对象类型?在

另外,我搜索了“Set View Python Difference”来查找重复的问题,但没有找到任何问题。在


Tags: 对象view视图类型字典顺序iterableset
1条回答
网友
1楼 · 发布于 2024-06-26 19:36:01

只有dict.keys()字典视图才是始终的集合(在某种程度上,它的行为类似于一个集合,但具有字典的实时视图)。在

dict.values()视图是一个集合,因为不能保证值是唯一的,也不能保证是散列的(集合的一个要求)。您还必须在创建values dictionary视图时预先计算所有哈希值,这是一个可能非常昂贵的操作。在这种情况下,您总是可以使用显式的set(dictionary.values())。在

这就留下了dict.items()视图,它几乎是一个集合,前提是所有的值都是散列的;这是因为当你从视图中创建一个交集、并集或其他新集合时,你需要生成一个新的set对象,这要求整个键值对是散列的;在这种情况下,您不能再保证只有密钥是唯一的。在

另请参阅Dictionary View Objects文档。在

相关问题 更多 >