Python 将集合添加到集合并生成嵌套集合

Python 将集合添加到集合并生成嵌套集合,python,set,nested,Python,Set,Nested,在Python中,我想让集合由集合组成,因此我得到一组集合(嵌套集合) 例如: {{1,2}, {2,3}, {4,5}} 但是,当我尝试以下方法时: s = set() s.add(set((1,2))) 我得到一个错误: Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> s.add(set((1,2))) TypeError: unhashable t

在Python中,我想让集合由集合组成,因此我得到一组集合(嵌套集合)

例如:

{{1,2}, {2,3}, {4,5}}
但是,当我尝试以下方法时:

s = set()
s.add(set((1,2)))
我得到一个错误:

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    s.add(set((1,2)))
TypeError: unhashable type: 'set'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
s、 添加(集合((1,2)))
TypeError:无法损坏的类型:“set”

有谁能告诉我我的错误在哪里,我是如何实现我的目标的吗?

你不能有一套集合,因为集合是不易损坏的对象;它们可以通过添加或删除项目进行变异

您将需要使用一组,而不是:

演示:


冻结集在各个方面都与正常集相似,只是它们不能变异。此功能生成它们,并允许您将它们用作集合的项或字典的键。

您的问题是集合只能包含对象,而集合不可散列

对于外部集合的元素,应该使用可散列的类型

In [3]: s = set([frozenset([1,2]), frozenset([3,4])])

In [4]: s
Out[4]: {frozenset({1, 2}), frozenset({3, 4})}

谢谢你们两位的快速回复:)好的,现在我明白了。但是,我还涉及到另一个问题:
set()
frozenset()
如果给它们一个字符串参数,它们都会创建一个包含多个元素的(冻结的)集,比如:
>>set('ab'){'a','b'}
>frozenset({'a','b'})
为什么它们将字符串拆分为单独的元素?我想得到
{'ab'}
resp
frozenset({'ab'})
你能再帮我一次吗?@John-
frozenset
正在对字符串进行迭代,并将其字符收集到一个新的frozenset中。您需要执行
frozenset(['ab'])
以保持字符串完整。@iCodez-再次感谢您的帮助-现在它工作正常:)
>>> s = set()
>>> s.add(frozenset((1,2)))
>>> s.add(frozenset((2,3)))
>>> s.add(frozenset((4,5)))
>>> s
{frozenset({1, 2}), frozenset({2, 3}), frozenset({4, 5})}
>>>
In [3]: s = set([frozenset([1,2]), frozenset([3,4])])

In [4]: s
Out[4]: {frozenset({1, 2}), frozenset({3, 4})}