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

时间:2017-11-12 12:10:57

标签: python dictionary hashmap set intersection

假设我有一个名为Node

的对象

Node有两个属性nameage

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

我希望获得set1set2的交集。

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

这是通过覆盖__eq__方法完成的。

这意味着如果Node("Jenna", 54)中存在set1Node("Jenna", 29)中存在set2,那么Nodes中将会有一个Node

如果set1set2的交叉点中存在Node("Jenna", 54),我该如何强制该Node("Jenna", 29)

即 - 在上面的示例中,如何强制交集包含<input type="submit"/> NOT $('form#id').submit(function(e) { $(this).children('input[type=submit]').attr('disabled', 'disabled'); e.preventDefault(); return false; });

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

看看: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}