如何在 Python 中创建一组集合?

我正在尝试用 Python 做一组集合,但是我不知道怎么做。

从空集 xx开始:

xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)

但我明白

TypeError: unhashable type: 'list'

或者

TypeError: unhashable type: 'set'

有没有可能在 Python 中有一组集合?

我正在处理一个集合的大集合,我希望能够不必处理重复集合(集合 A1,A2,... 的集合 B,如果 Ai = Aj,A 将“取消”两个集合)

74440 次浏览

在里面使用 frozenset

Python 的抱怨是因为内部 set对象是可变的,因此不是散列的。解决方案是对内部集合使用 frozenset,以表明您无意修改它们。

人们已经提到,你可以用 冻结()来实现这一点,所以我只需要添加一个代码来实现这一点:

例如,您希望从下面的列表列表中创建一组集合:

t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]

您可以通过以下方式创建您的集合:

t1 = set(frozenset(i) for i in t)

所以我也有同样的问题。我想创建一个数据结构,作为一组集合工作。问题是这些集合必须包含 永恒不变对象。因此,您可以简单地将它作为一组元组。这招对我很管用!

A = set()
A.add( (2,3,4) )##adds the element
A.add( (2,3,4) )##does not add the same element
A.add( (2,3,5) )##adds the element, because it is different!