我发现在Python中{1} == frozenset({1})
的值为True
很奇怪。 set
和frozenset
是不同的对象类型,我看不到其他可迭代对象类型之间的相似性(例如{1} == (1,)
的值为False
)。为什么集合会发生这种现象?还有其他具有类似行为的可迭代对象类型吗?
答案 0 :(得分:7)
按照documentation python2和documentation python3
根据以下条件将
set
的实例与frozenset
的实例进行比较 他们的成员。例如,“set('abc') == frozenset('abc')
”返回True
。
和python3文档中:
设置和冻结设置支持集都可以设置比较。当且仅当每个集合的每个元素都包含在另一个集合中(每个元素是另一个子集)时,两个集合才相等。当且仅当第一集合是第二集合的适当子集(是子集,但不相等)时,一个集合小于另一个集合。当且仅当第一个集合是第二个集合的适当超集(是一个超集,但不相等)时,一个集合才大于另一个集合。