首页 > 解决方案 > 为什么 {1} == freezeset({1}) 在 Python 中?

问题描述

我觉得奇怪的是,在 Python 中,{1} == frozenset({1})计算结果为True. set并且frozenset是不同的对象类型,我没有看到其他可迭代对象类型之间的这种相似性(例如,{1} == (1,)评估为False)。为什么集合会出现这种行为?是否还有其他具有类似行为的可迭代对象类型?

标签: python

解决方案


根据文档 python2文档 python3

的实例与基于其成员set的实例进行比较。frozenset例如,“ set('abc') == frozenset('abc')”返回 True.

并在 python3 文档中:

set 和 freezeset 都支持 set 设置比较。两个集合相等当且仅当每个集合的每个元素都包含在另一个集合中(每个元素都是另一个集合的子集)。一个集合小于另一个集合当且仅当第一个集合是第二个集合的真子集(是一个子集,但不相等)。一个集合大于另一个集合当且仅当第一个集合是第二个集合的真超集(是一个超集,但不相等)。


推荐阅读