首页 > 解决方案 > 如何确定至少一个 2 项集是否在 3 项集列表中?

问题描述

需要找出一个 3 项集列表是否是至少一个 2 项集的超集。每个具有频繁大小为 2 子集的 3 项集都已在您的列表中。该列表不包含重复集。

这是我尝试的最后一个代码。如果有任何子集/超集,输出应该是一个小的集合列表。使用此代码,尽管我似乎得到了更大的列表而不是更小的列表。已编辑...

itemset2 =[{'', ''}, {'', ''}, {'', ''}, {'', ''}, {'', ''}, {'', ''},
 {'', ''}, {'', ''}, {'', ''}, {'', ''}, {'', ''}]


itemset3 =[{'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''},
 {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''},
 {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''},
 {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}, 
{'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''},
 {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}, {'', '', ''}]

stuff = itemset2

final = [set(y) for y in {frozenset(x) for x in stuff}]

final

nostuff=itemset3
ablanklist=[]
ablanklist2=[]

blanklist=set()
for things in nostuff:
    ablanklist.append(list(things))

for stuff in ablanklist:
    for items in final:
        if stuff[0] and stuff[1] in items:
            print(items)

#print(final)

标签: pythonlistsetaprioripruning

解决方案


条件是 的简单应用any。给定一个trio元素three-itemset

if any(pair < trio for pair in two-itemset):

将告诉您任何对是否是给定 3 元素集的子集。


推荐阅读