使用元组(i,j,k,...)构建交集list_of_sets [i]& list_of_sets [j]& list_of_sets [k]的

时间:2014-07-03 11:59:36

标签: python set

我在树上搜索。在每个节点,我需要找到一些集合的交集,这些集合都包含在list_of_sets = [set_1,set_2,...,set_n]中。

我使用索引元组来跟踪我所在的节点,即node = [i,j,k,...]。这个元组的大小从1到5不等,具体取决于树中的位置。

在任何节点,例如node = [i,j,k,l],我想构造一个这样的表达式:

intersection = list_of_sets[i] & list_of_sets[j] & list_of_sets[k] & list_of_sets[l]

我完全不知道如何开始这个。非常感谢您的建议;)

1 个答案:

答案 0 :(得分:2)

In [34]: sets, node = [{1, 4}, {4, 5}, {4, 10}], (0, 1, 2)

In [35]: set.intersection(*(sets[x] for x in node))
Out[35]: {4}

上述工作原因是sets' intersection method接受任意数量的相交集。您也可以使用operator.itemgetter

In [38]: set.intersection(*itemgetter(*node)(sets))
Out[38]: {4}