我已经学习Python一个多月了,我遇到了一个关于视图和集合的讨论。我正在使用的“学习Python”( Learning )一书指出,视图是可迭代的,其对象的顺序与字典的顺序相同,但是视图也支持set操作。
在我看来,他们可以做每件事。它看起来像鸭子,庸医像鸭子,并允许设置操作就像鸭子。为什么集合和视图是独立类型的对象?
此外,我搜索了“设置视图Python差异”,以查找重复的问题,但找不到任何问题。
发布于 2014-07-18 17:30:18
只有dict.keys()字典视图始终是一个集合(就其行为而言,它的行为就像一个集合,但它具有字典的活动视图)。
dict.values()视图从来不是一个集合,因为不能保证值是唯一的,也不能保证它是可选的(集合的要求)。您还必须在创建值字典视图时预先计算所有散列,这是一个可能非常昂贵的操作。在这种情况下,始终可以使用显式set(dictionary.values())。
这使得dict.items()视图(主要是一个集合)在所有值都是可哈斯的情况下产生;这是因为当您从视图创建一个交叉或联合或其他新的集合时,您必须生成一个新的set对象,它要求整个键值对都是可选的;您不能再保证在这种情况下只有键是唯一的。
还请参阅字典视图对象文档。
https://stackoverflow.com/questions/24830632
复制相似问题