pka*_*mol 8 python set
在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得到相同的插入,所以假设集合消除重复,只有其中一个(真)得到留下?我们如何保持两者?
meh*_*guh 8
集合是hashables的集合.即使语句1 is True为False,语句1 == True也是True.因此,它们具有相同的哈希值,并且不能单独存在于集合中,并且您不能将它们保存在集合中
1 is True
1 == True
编辑为了使它明确,正如jme指出的那样,这是因为两件事情都是真的 - 它们是相等的(每个__eq__)并且它们具有相同的散列值(每个__hash__).
__eq__
__hash__
在一个完美的世界中,相等的对象也将具有相同的哈希值,幸运的是内置类型也是如此.
归档时间:
10 年,5 月 前
查看次数:
543 次
最近记录:
10 年,2 月 前