选择将python集与自定义对象相交时要保留的元素

2024-10-03 15:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个名为Node的对象

Node有两个属性,nameage

我有一组Nodes称为set1,另一组称为set2

我想得到set1set2的交集。你知道吗

但是,我希望交集方法中的比较完全基于name属性。你知道吗

这是通过重写__eq__方法来实现的。你知道吗

这意味着如果Node("Jenna", 54)存在于set1中,而Node("Jenna", 29)存在于set2中,那么这些Nodes中的一个将存在于instersection中。你知道吗

如何强制交集保持Nodeset1之间的Node,如果它存在于与set2的交集中。你知道吗

也就是说,在上面的例子中,如何强制交集包含Node("Jenna", 54)不包含Node("Jenna", 29)?你知道吗

有什么想法吗?你知道吗


Tags: 对象方法namenodeage属性例子eq
1条回答
网友
1楼 · 发布于 2024-10-03 15:23:53

看看:What's the algorithm of 'set.intersection()' in python?

如果重写__eq____hash__,它可能会工作,但是交集将保留最短集合的元素。你知道吗

另一种方法是:

s2_names = {n.name for n in s2}
inter = {n for n in s1 if s1.name in s2_names}

相关问题 更多 >