2024-04-26 02:36:42 发布
网友
IPython 3交互式shell:
In [53]: set2 = {1, 2, True, "hello"} In [54]: len(set2) Out[54]: 3 In [55]: set2 Out[55]: {'hello', True, 2}
这是因为1和True得到相同的解释,所以在set消除重复的情况下,只有其中一个(True)可以保留? 我们怎么能两个都留着呢?在
集合是hashables的集合。即使语句1 is True为False,语句1 == True为True。因此,它们具有相同的哈希值,不能单独存在于一个集合中,您不能将它们都保留在一个集合中
1 is True
1 == True
编辑使其明确,正如jme所指出的,这是因为这两件事都是真的-它们是相等的(per __eq__),并且它们有相同的hash value(per__hash__)。在
__eq__
__hash__
在一个完美的世界中,相等的对象也会有相同的哈希值,谢天谢地,这对于内置类型来说是正确的。在
集合是hashables的集合。即使语句
1 is True
为False,语句1 == True
为True。因此,它们具有相同的哈希值,不能单独存在于一个集合中,您不能将它们都保留在一个集合中编辑使其明确,正如jme所指出的,这是因为这两件事都是真的-它们是相等的(per
__eq__
),并且它们有相同的hash value(per__hash__
)。在在一个完美的世界中,相等的对象也会有相同的哈希值,谢天谢地,这对于内置类型来说是正确的。在
相关问题 更多 >
编程相关推荐