集合和视图之间的差异

时间:2014-07-18 17:26:00

标签: python python-3.x view set

我已经学习了大约一个多月的Python,我开始讨论视图和集合。我正在使用的书“学习Python”说,视图是可迭代的,其对象的顺序与字典的顺序相同,但视图也支持集合操作。

在我看来,他们可以做所有事情。它看起来像一只鸭子,像鸭子一样嘎嘎叫,并允许像鸭子一样的集合操作。为什么集合和视图会分开对象类型?

此外,我搜索了“设置查看Python差异”#39;寻找重复的问题而无法找到任何问题。

1 个答案:

答案 0 :(得分:2)

只有dict.keys()字典视图总是一个集合(只要它表现得像一个集合,但是具有字典实时视图的集合)。

dict.values()视图从不一个集合,因为不能保证这些值是唯一的,并且也不保证它们是可清除的(对集合的要求)。您还必须在创建值字典视图时预先计算所有哈希值,这可能是非常昂贵的操作。在这种情况下,您始终可以使用明确的set(dictionary.values())

如果所有值都是可清除的,则会留下dict.items()视图, 一组。这是因为当您从视图中创建交集或联合或其他新集时,您来生成新的set对象,这需要整个键值对是可以洗的;你不能再保证在这种情况下钥匙只是唯一的。

另请参阅Dictionary View Objects文档。