【问题标题】:Difference between a set and a view集合和视图的区别
【发布时间】:2014-07-18 17:25:59
【问题描述】:

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

在我看来,他们可以做所有系列所做的事情。它看起来像鸭子,叫起来像鸭子,并且允许像鸭子一样进行集合操作。为什么集合和视图又是不同类型的对象呢?

另外,我搜索了“设置查看 Python 差异”以查找重复的问题,但找不到任何问题。

【问题讨论】:

标签: python python-3.x view set


【解决方案1】:

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

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

剩下的dict.items() 视图,大部分是一个集合,前提是所有值都是可散列的;这是因为当您从视图创建交集或联合或其他新集合时,您必须生成一个新的set 对象,这要求整个键值对是可散列的;在这种情况下,您不能再保证只有键是唯一的。

另请参阅Dictionary View Objects 文档。

【讨论】:

    猜你喜欢
    • 2015-12-11
    • 2017-05-13
    • 1970-01-01
    • 2018-07-08
    • 2013-11-02
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多