本文记录 Python Set 判定为同一对象的原理。
Set 判定方法 {#Set-判定方法}
Python 中的集合(set)确实是通过 __hash__
方法来判定两个对象是否相同的。在 Python 中,集合是一个无序的、不重复的元素集。当您将一个对象添加到集合中时,Python 会调用该对象的 __hash__
方法来获取它的哈希值,再调用 __eq__
方法双重判定是否为同一对象。
具体步骤 {#具体步骤}
- 哈希值计算 :当把一个对象添加到集合中时,Python 会首先调用该对象的
__hash__
方法来计算它的哈希值。 - 哈希值比较:集合内部使用这个哈希值来快速定位存放元素的位置。如果位置上已经有元素,那么需要进一步比较它们的哈希值。
- 同一位置上的对象比较 :如果两个对象的哈希值相同,Python 还会调用它们的
__eq__
方法来确认这两个对象是否真的相同。这是因为在不同的对象上可能计算出相同的哈希值(哈希冲突)。
只有在两个对象的哈希值相同,并且它们通过 __eq__
方法比较也返回 True
时,Python 才会认为这两个对象是相同的,因此在集合中它们被视为同一个元素,不会重复添加。
示例代码 {#示例代码}
文章链接:
https://www.zywvvd.com/notes/coding/python/python-set-judge/python-set-judge/