我正在创建一个字典,其中的值是一个集合,由多个元组组成。
k1->{('ab', 'aram'), ('ab', 'a aram')}
k2 ->{('cd', 'b cme'), ('cd', 'cme')}
如果发现一个元组的两个元素在另一个元组中重复,则集合将创建唯一元素。
d = defaultdict(set)
........
d[k].add((kg, en))
但是,如果只有元组中的第一个元素是重复的,我希望被认为是重复的。
所以在上面的情况下,因为第一个元素是重复的,所以应该是:
k1->{('ab', 'aram')}
k2 ->{('cd', 'b cme')}
您可以通过定义其hash和eq方法来使用自定义类,以便它与设置的一起工作
>>> class MyObject:
def __init__(self,data):
self.data=data
def __hash__(self):
return hash(self.data[0])
def __eq__(self,other):
if isinstance(other,type(self)):
return self.data[0]==other.data[0]
return False
def __repr__(self):
return f"{type(self).__name__}({self.data!r})"
>>> t=('ab', 'aram'), ('ab', 'a aram')
>>> x=list(map(MyObject,t))
>>> x
[MyObject(('ab', 'aram')), MyObject(('ab', 'a aram'))]
>>> set(x)
{MyObject(('ab', 'aram'))}
>>>