python - 集合和 View 之间的区别

标签 python python-3.x view set

我学习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/

相关文章:

javascript - 停止来自 Ember 操作的点击传播?

android - 查看动画(调整球的大小)

Python fromtimestamp() 方法不一致

python - 对 django 中列表列表的元素进行排名和计数

python - 将 request.user 参数传递给 modelformset_factory 表单

python - 对对象方法使用 Python 模拟的 autospec 的正确方法是什么?

Python 3 逻辑 not 将 True 返回为 True

android - 全屏半透明自定义对话框,忽略触摸并将它们分派(dispatch)到底层 View

python - 如何从 Python 列表中的字符串中删除前导和尾随空格

python - 为什么 compileall 模块不工作?