我在创建 float 和 int 数据类型集时遇到了一些问题,例如
my_set = {1.00 1}
我会认为这是一组两个不同的元素,一个 float 1.00 和一个 int 1。但是,它默认为:
>>> 我的设置 = 设置([1])
这里,float 消失了,只有 int 保留了下来。然后事情变得困惑,因为 1.00 in my_set 返回 True。
我想知道是否有人可以解释实际发生的事情?有解决办法吗?
请您参考如下方法:
>>> 1 == 1.0
True
>>> hash(1) == hash(1.0)
True
Python 认为两者在集合中的使用和作为映射键方面是完全相同的值。解决此问题的唯一方法是将这两个值包装在一个自定义类中,该类将上述任一比较评估为 false。
