Skip to main content
 首页 » 编程设计

Python 在集合构造过程中自动将 float 简化为整数

2025年05月04日20lautakyan007

我在创建 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。