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

Python集合元素唯一性判定逻辑及对应官方说明查询问询

Python集合元素唯一性判断规则

核心判定逻辑

Python集合对元素去重需要同时满足两个必要条件:

  • 两个元素的哈希值相等,即 hash(a) == hash(b)
  • 两个元素的相等判断返回True,即 a == b
    只有两个条件同时成立时,集合才会将二者视为同一个元素,保留先加入集合的那个值,丢弃后加入的重复值。

常见现象解释

1. True与1的去重表现

>>> hash(True)
1
>>> 1 == True
True

二者同时满足哈希相等、值相等的条件,所以会被去重,集合中只会保留先出现的那个:

# True先出现,后续的1被丢弃
>>> s1 = {True,1,1,2}
>>> s1
{True, 2}
# 1先出现,后续的True被丢弃
>>> s2 = {1,1,True,2}
>>> s2
{1, 2}

2. False与0的去重表现

>>> hash(False)
0
>>> 0 == False
True

二者同样同时满足两个判定条件,所以也遵循先出现保留的规则:

# False先出现,后续的0被丢弃
>>> s3 = {False,0,""}
>>> s3
{False, ''}
# 0先出现,后续的False被丢弃
>>> s4 = {0,False,(),0,""}
>>> s4
{0, '', ()}

3. 空字符串未被去重的原因

空字符串虽然哈希值为0,但和0、False的相等判断都不成立:

>>> hash("")
0
>>> "" == 0
False
>>> "" == False
False

不满足第二个判定条件,所以哪怕出现哈希冲突,也不会被视为同一个元素,会被正常保留在集合中。

规则说明

该判定逻辑属于Python集合的基础设计规则,官方文档中明确说明:集合仅包含的元素必须为可哈希对象,自动去重的判断标准就是两个元素哈希值相同且相等判断为True。
内容的提问来源于stack exchange,提问作者Raghuraman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:06:03