【发布时间】:2012-09-29 04:21:30
【问题描述】:
目前我被困在试图找到三组的交集。现在这些集合实际上是我正在转换成集合的列表,然后试图找到它们的交集。
这是我目前所拥有的:
for list1 in masterlist:
list1 = thingList1
for list2 in masterlist:
list2 = thingList2
for list3 in masterlist:
list3 = thingList3
d3 = [set(thingList1), set(thingList2), set(thingList3)]
setmatches c = set.intersection(*map(set,d3))
print setmatches
我得到了
set([])
Script terminated.
我知道有一种更简单更好的方法可以做到这一点,但我找不到...
编辑
好的,这就是我现在所拥有的。
setList=()
setList2=()
setList3=()
for list1 in masterlist:
setList=list1
for list2 in masterlist:
setList2=list2
for list3 in masterlist:
setList3=list3
setmatches=set(setList) & set(setList2) & set(setList3)
print setmatches
仍然没有给我我正在寻找的东西:这是我确保在每个列表中的一个匹配项。它给了我看起来像是所有集合的添加。
【问题讨论】:
-
您的问题似乎暗示输出是一个问题,或意外。输出是否与问题相关?你确定每个列表都有一些共同的元素吗?
-
代码的第一部分应该做什么?前三个 for 循环似乎什么也没做。
-
好的,我正在处理一个由几个子列表组成的主列表,每个子列表都是一个值列表。我现在正在处理的部分是将每个子列表更改为一个集合并与这些集合相交。为了测试这个程序,我确保有一个匹配项。
-
好的,非常感谢您的帮助。事实证明,是我愚蠢的 for 循环搞砸了一切。我需要做的就是 set(masterlist[1]) 来获得我想要的集合。
标签: python intersection set set-intersection