添加set以设置和创建嵌套集

Joh*_*ohn 5 python nested set

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

例:

{{1,2}, {2,3}, {4,5}}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试以下内容时:

s = set()
s.add(set((1,2)))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    s.add(set((1,2)))
TypeError: unhashable type: 'set'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我的错误在哪里以及我如何实现目标?

Ffi*_*ydd 7

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

您应该使用清除的frozenset类型作为外部集的元素.

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

In [4]: s
Out[4]: {frozenset({1, 2}), frozenset({3, 4})}
Run Code Online (Sandbox Code Playgroud)

  • @John - `frozenset`迭代字符串并将其字符收集到新的冻结集中.你需要做`frozenset(['ab'])`来保持字符串不变. (2认同)