You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Python集合中布尔值与整数共存时的输出异常原因

集合中布尔值与整数的去重逻辑

先看你给出的测试代码与输出结果:

测试代码:

# case 1
s = {1, True}
print(s)

# case 2
s = {2, True}
print(s)

# case 3
s = {1, False}
print(s)

# case 4
s = {0, False}
print(s)

输出结果:

{1}
{True, 2}
{False, 1}
{0}

核心原因

Python里的布尔类型bool是整数类型int的子类,True本质等价于整数1,False等价于整数0——你可以直接在交互环境里验证:True == 1返回True,False == 0也返回True。

而集合的核心特性是元素唯一,判断两个元素是否重复的标准是:两者哈希值相同,且a == b返回True。

逐个分析测试用例

  • case 1:1和True满足1 == True,哈希值也一致,集合会判定为同一个元素,因此只保留其中一个(这里显示1,具体保留哪个取决于内部存储逻辑,结果只要是二者其一都合理)
  • case 2:2和True不相等(2 != True),属于两个独立元素,所以都会被保留
  • case 3:1和False不相等(1 != False),因此两个元素都能留在集合里
  • case 4:0和False满足0 == False,哈希值相同,集合会去重,只保留其中一个(这里显示0)

内容的提问来源于stack exchange,提问作者Habibur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:12:03