只有当元组的第一个元素(集合的元素)重复时,才确定集合中的重复

  • 本文关键字:元素 集合 元组 第一个 python
  • 更新时间 :
  • 英文 :


我正在创建一个字典,其中的值是一个集合,由多个元组组成。

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'))}
>>> 

相关内容

  • 没有找到相关文章

最新更新