在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是可变的.
您不能拥有通常意义上的一组集合,但如果您可以使用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)