我已经学习了大约一个多月的Python,我开始讨论视图和集合。我正在使用的书“学习Python”说,视图是可迭代的,其对象的顺序与字典的顺序相同,但视图也支持集合操作。
在我看来,他们可以做所有事情。它看起来像一只鸭子,像鸭子一样嘎嘎叫,并允许像鸭子一样的集合操作。为什么集合和视图会分开对象类型?
此外,我搜索了“设置查看Python差异”#39;寻找重复的问题而无法找到任何问题。
答案 0 :(得分:2)
只有dict.keys()
字典视图总是一个集合(只要它表现得像一个集合,但是具有字典实时视图的集合)。
dict.values()
视图从不一个集合,因为不能保证这些值是唯一的,并且也不保证它们是可清除的(对集合的要求)。您还必须在创建值字典视图时预先计算所有哈希值,这可能是非常昂贵的操作。在这种情况下,您始终可以使用明确的set(dictionary.values())
。
如果所有值都是可清除的,则会留下dict.items()
视图, 一组。这是因为当您从视图中创建交集或联合或其他新集时,您有来生成新的set
对象,这需要整个键值对是可以洗的;你不能再保证在这种情况下钥匙只是唯一的。
另请参阅Dictionary View Objects文档。