Python将1和True设置为插值

发布于 2021-01-29 14:57:34

在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获得相同的插值,所以考虑到集合消除了重复项,所以只有其中一个(True)得以保留?我们如何保持两者?

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    编辑 使其明确,正如jme指出的,这是因为这两个都是正确的-它们相等(per
    __eq__)并且具有相同的哈希值(per
    __hash__)。

    在理想情况下,相等的对象也将具有相同的哈希值,并且值得庆幸的是,对于内置类型而言,这是正确的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看