我正在制作一个程序,在这个程序中,我需要检查一组中的每个元素(从一组集合中),然后将它与一个' master'进行比较。如果两个集合中的至少一个元素匹配,则设置然后将该集合附加到列表。
我尝试像列表一样攻击这个问题只是为了意识到索引不能在集合上工作。
除了我想要完成的事情之外:
newlist = []
i = set([5, 3, 1]) # <-- 'Master' Set
z = set([5, 0, 4])
#Output should be -> newlist = [set([5,0,4])]
答案 0 :(得分:1)
假设z
是集的列表,就像在您的问题描述中一样,但不在附加的代码段中。
newlist = [x for x in z if not i.isdisjoint(set(x))]
# or newlist = [x for x in z if i.intersection(set(x))]
答案 1 :(得分:0)
您可以使用intersection和set的组合来解决此问题:
var a = $(this).attr('idq');
$.ajax({
type: "POST",
url: "try.php",
data: {
queryy: a
},
dataType: "json",
success: function(result) {
var data = jQuery.parseJSON(result);
$.each(data, function(index, value) {
alert("successful");
});
},
error: function(result) {
alert("error");
}
});
所以基本上,编写一个if语句来检查两个集合的交集长度。如果length大于0,则将newlist设置为等于第二组。