递归地添加到集合中

时间:2015-03-25 21:44:32

标签: python recursion set

当set本身不可用时,如何递归添加到集合?

s = set()
if root.children == []:      
    if str(root.value) not in s:        
        s.add(str(root.value))
        return s
    else:
        if str(root.value) not in s:
            s.add(str(root.value))
        for child in root.children:
            s.add(distinct_leaf_helper(child))
        return s

这将导致TypeError

1 个答案:

答案 0 :(得分:1)

如果您确实要将子项添加为集,可以使用frozenset

s.add(frozenset(distinct_leaf_helper(child)))

虽然我猜你的意图是添加子集中的所有元素,在这种情况下你可以使用.update()将给定iterable的元素添加到集合中:

s.update(distinct_leaf_helper(child))