如何在Python中拥有一组集合?

4 python list set python-2.7

在Python中,没有完全支持异构数据结构.例如,这失败了:

set(set(1,2),set(2,3))
Run Code Online (Sandbox Code Playgroud)

处理套装的最佳方法是什么?

Spa*_*ine 13

使用frozenset,

>>> set([frozenset([1,2]), frozenset([2,3])])
set([frozenset([1, 2]), frozenset([2, 3])])
Run Code Online (Sandbox Code Playgroud)

要表示一组集合,内部集合必须是冻结集合对象,因为集合的元素必须是可散列的(所有Python的不可变内置对象都是可散列的).frozenset不可变的,set可变的.


Sim*_*ser 5

您不能拥有通常意义上的一组集合,但如果您可以使用frozenset对象,那么它就可以工作:

>>> set([set([1,2]), set([3,4])])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
Run Code Online (Sandbox Code Playgroud)

这确实有效:

>>> set([frozenset([1,2]), frozenset([3,4])])
set([frozenset([1, 2]), frozenset([3, 4])])
Run Code Online (Sandbox Code Playgroud)