如何从集合列表中找到最大集或超集(最大集是不是列表中另一个集合的子集的集合)

2024-09-29 01:23:56 发布

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

这是关于在一个基于密度准则的图中寻找稠密的社团,下面所有的集合都是图的稠密社团

list L=[set([1]), set([2]), set([3]), set([4]), set([5]), set([6]), set([7]), set([8]), set([1, 2]), set([1, 3]), set([1, 4]), set([3, 4]), set([1, 3, 4]), set([1, 5]), set([2, 5]), set([4, 5]), set([1, 2, 5]), set([1, 4, 5]), set([2, 6]), set([4, 7]), set([8, 5]), set([8, 7])]

我需要得到这一列表的最大集合,即,在列表集合([1,4,5])是最大集合集合集合的集合([1]),集合([4]),集合([4]),集合([5]),集合([1,5]),集合([1,5,5]),集合([1,1,4,4])和集合([4,5,5])相似地设置([1])([1]),集合([3])。集合([4]),集合([4]),集合([1,3]),集合([1,3]),集合([1,4]),集合([3,4,4]))集合([3,4]))有一个最大集合集([1,3,4]))的集合([1,3,4]))的集合([1,3,所以我只需要打印一套([1,3,4])如你所见,集合([1,2,5])是一个极大集,所有不属于大集合子集的集合都被视为极大集,所以我只需要得到最大集合,而不是更大集合的子集


Tags: 列表子集list密度set准则社团
1条回答
网友
1楼 · 发布于 2024-09-29 01:23:56
L=[set([1]), set([2]), set([3]), set([4]), set([5]), set([6]), set([7]), set([8]), set([1, 2]), set([1, 3]), set([1, 4]), set([3, 4]), set([1, 3, 4]), set([1, 5]), set([2, 5]), set([4, 5]), set([1, 2, 5]), set([1, 4, 5]), set([2, 6]), set([4, 7]), set([8, 5]), set([8, 7])]


#this grouping the list by there length ...
values = set(map(lambda x:len(x), L))
newlist = {x:[y for y in L if len(y)==x] for x in values}
maxlen=max(values)

#checking for the subset.if no subset.it is returned

for i in values:
    print [ key for key in newlist[i] if not any([ val.intersection(key)==key for j in values if j !=i for val in newlist[j] ])]


#output =[set([2, 6]), set([4, 7]), set([8, 5]), set([8, 7])] [set([1, 3, 4]), set([1, 2, 5]), set([1, 4, 5])]

相关问题 更多 >