假设我有一个名为Node
Node
有两个属性name
和age
我有一组Nodes
名为set1
,另一组名为set2
我希望获得set1
和set2
的交集。
但是我希望交集方法中的比较完全基于name
属性。
这是通过覆盖__eq__
方法完成的。
这意味着如果Node("Jenna", 54)
中存在set1
而Node("Jenna", 29)
中存在set2
,那么Nodes
中将会有一个Node
。
如果set1
与set2
的交叉点中存在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;
});
?
有什么想法吗?
答案 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}