Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python查找两个自定义类集之间的差异_Python_Python 3.x - Fatal编程技术网

Python查找两个自定义类集之间的差异

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,产品是我的定制类。 如何找到集合A中的所有产品满足以下标准

a、 link==b.link和a.date!=b、 日期

使用
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)