我在树上搜索。在每个节点,我需要找到一些集合的交集,这些集合都包含在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]
我完全不知道如何开始这个。非常感谢您的建议;)
答案 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}