python set中的对象如何去重
本文介绍了python set中的对象如何去重的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
定义Person对象
class Person():
def __init__(self,name,number):
self.name=name
self.number=number
person1=Person('yms',('123456','123'))
person2=Person('yms',('123456','123'))
将两个对象都放到set里面
set([person1,person2])
我得出的结果set里面含有2个对象,但是明显这俩个对象一样的,请问怎么去重呢?注意一下('123456','123')是个元组不是普通字符串
解决方案
你需要为这个类定义__eq__
、__ne__
、__hash__
这三个函数,缺一不可:
class Person(object):
def __init__(self, name, number):
self.name = name
self.number = number
def __eq__(self, other):
if isinstance(other, Person):
return ((self.name == other.name) and (self.number == other.number))
else:
return False
def __ne__(self, other):
return (not self.__eq__(other))
def __hash__(self):
return hash(self.name) + hash(self.number)
p1 = Person('yms', ('123456','123'))
p2 = Person('yms', ('123456','123'))
print(set([p1, p2]))
由于你说number
是元组,所以我就直接对其使用hash
函数了。这个hash
函数是随便写的,你自己根据实际情况调整。
这篇关于python set中的对象如何去重的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文