我学习Python大约一个多月了,我遇到了关于 View 和集合的讨论。我正在使用的《学习 Python》一书说 View 是可迭代的,并且其对象的顺序与字典的顺序相同,但 View 也支持集合操作。
在我看来,他们可以做所有套装能做的事情。它看起来像鸭子,叫声像鸭子,并且允许像鸭子一样进行集合操作。为什么集合和 View 是不同类型的对象?
此外,我搜索了“Set View Python Difference”以查找重复的问题,但没有找到任何问题。
最佳答案
只有 dict.keys()
字典 View 始终是一个集合(就其行为而言就像一个集合,但具有字典的实时 View )。
dict.values()
View 永远不是一个集合,因为不能保证值是唯一的,也不能保证是可散列的(要求对于套装)。您还必须在创建值字典 View 时预先计算所有哈希值,这可能是非常昂贵的操作。在这种情况下,您始终可以使用显式 set(dictionary.values())
。
剩下的就是 dict.items()
View ,它大部分是一个集合,前提是所有值都是可哈希的;这是因为当您从 View 创建交集或并集或其他新集合时,您必须生成一个新的集合对象,这要求整个键值对是可散列;在这种情况下,您不能再保证只有键是唯一的。
另请参阅Dictionary View Objects文档。
关于python - 集合和 View 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830632/