我有六套,名为s1。。。s6,每个都有几百个字符串元素
我想测试它们中是否有任何一个具有与其他任何元素相同的元素集。我该怎么设置呢
值得一提的是,我从这里开始,试图打印一个罪犯的索引:
setlist = [s1, s2, s3, s4, s5, s6]
for i in range(len(setlist)):
if any([setlist[i] == st for st in setlist[i+1:]]):
print('You have redundant sets: %i' % i)
为了澄清,s1-s6均为set()类型。我需要能够看到哪些匹配,例如,如果s2和s3恰好有相同的成员,我希望看到'You have redundant sets: s2, s3'
显然,我的起始代码不会让我达到目的
如果您想找到所有具有共同元素的集合对,这应该会有所帮助。您将希望使用内置的set函数,而不是进行元素比较
不能使用任何()函数来等值,因为任何()只接受列表,即使列表中有一个元素,也会返回true。即使这样做
将返回true,因为“setlist[i]”元素将在那里。因此,将返回true
一种解决方案可能是使用集合内置数据结构并比较每个集合。为此,你可以把你所有的集合放进一本字典,并给出(1,2,3,5,6)键。 要获得用于比较的所有排列,您可以使用itertools.product,例如:
通过使用perms,您可以执行以下操作:
或者,如果您的集合太大,您可以循环遍历每个集合并填写字典,其中键是集合成员,值是承载它们的集合
相关问题 更多 >
编程相关推荐