Python集1和Tru的解释

2024-04-26 02:36:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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)可以保留? 我们怎么能两个都留着呢?在


Tags: intruehellolenipython情况shellout
1条回答
网友
1楼 · 发布于 2024-04-26 02:36:42

集合是hashables的集合。即使语句1 is True为False,语句1 == True为True。因此,它们具有相同的哈希值,不能单独存在于一个集合中,您不能将它们都保留在一个集合中

编辑使其明确,正如jme所指出的,这是因为这两件事都是真的-它们是相等的(per __eq__),并且它们有相同的hash value(per__hash__)。在

在一个完美的世界中,相等的对象也会有相同的哈希值,谢天谢地,这对于内置类型来说是正确的。在

相关问题 更多 >