Python查找两个自定义类集之间的差异
假设我有两个产品集A和B,产品是我的定制类。 如何找到集合A中的所有产品满足以下标准 a、 link==b.link和a.date!=b、 日期 使用Python查找两个自定义类集之间的差异,python,python-3.x,Python,Python 3.x,假设我有两个产品集A和B,产品是我的定制类。 如何找到集合A中的所有产品满足以下标准 a、 link==b.link和a.date!=b、 日期 使用A.差异(B) 你认为这段代码会发生什么列表(产品)第一行肯定会失败。@zvone更新了我的案例,很抱歉造成混淆。基本上,我只想了解这两个集合之间的区别注意:散列的规范方法是依赖于tuple的散列功能(这是更通用和优化的,以获得良好的散列分布;在Python中制作小元组是高度优化的,因此构建成本很低)返回散列((self.link,self.dat
A.差异(B)
你认为这段代码会发生什么<代码>列表(产品)第一行肯定会失败。@zvone更新了我的案例,很抱歉造成混淆。基本上,我只想了解这两个集合之间的区别注意:散列的规范方法是依赖于
tuple
的散列功能(这是更通用和优化的,以获得良好的散列分布;在Python中制作小元组是高度优化的,因此构建成本很低)<代码>返回散列((self.link,self.date))对于大多数潜在用例来说都是有效且正确的。
A = set([Product('link1', '02-08-2018'), Product('link2', '01-01-2018'), Product('link3', '02-02-2018')])
B = set([Product('link1', '01-08-2018'), Product('link2', '01-01-2018'), Product('link4', '02-02-2018')])
# HOW?? I want get Product('link1', '02-08-2018') and Product('link3', '02-02-2018') back here
result = A - B
class Product:
def __init__(self, data):
self.link= data['link']
self.date= data['date']
def __hash__(self):
return hash(self.link+self.date)
def __eq__(self, other):
return self.link == other.link and self.date == other.date
class Product(object):
def __init__(self, link, date):
self.link= link
self.date= date
def __hash__(self):
return hash(self.link+self.date)
def __eq__(self, other):
return self.link == other.link and self.date == other.date
A = set([Product('link1', '02-08-2018'), Product('link2', '01-01-2018'), Product('link3', '02-02-2018')])
B = set([Product('link1', '01-08-2018'), Product('link2', '01-01-2018'), Product('link4', '02-02-2018')])
result = A.difference(B)