我想得到两套的联合。这是我到目前为止在python中的代码。当我使用大型数据集时,我希望它尽可能快。 每个frozensets不超过20个元素,但在一组中总共将有大约50,000个元素。所有数字都在0到100之间。我期望已经在两个集合中或者合并时已经存在于其中一个集合中的相当数量的frozensets。 我愿意转换到其他类型,如果它允许我的程序运行得更快,但我不想要任何重复的元素和顺序并不重要。
sets1 = set([frozenset([1,2,3]),frozenset([4,5,6])])
sets2 = set([frozenset([8,9,10]),frozenset([6,7,3])])
newSets = set()
for fset in sets1:
for fset2 in sets2:
newS = set(fset)
newS.update(fset2)
newSets.add(frozenset(newS))
设置正确的输出([1,2,3,8,9,10],[1,2,3,6,7],[3,4,5,6,7],[4, 5,6,8,9,10])
答案 0 :(得分:1)
您可以通过直接"或者set
来避免临时frozenset
实例以及转换为frozenset
:
newSets = set()
for fset in sets1:
for fset2 in sets2:
newSets.add(fset | fset2)
使用set-comprehension可以实现进一步(轻微)加速:
newSets = { fset|fset2 for fset in sets1 for fset2 in sets2 }