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

Mat*_*att 111 python collections nested set

我正在尝试在Python中创建一组集合.我无法弄清楚该怎么做.

从空集开始xx:

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

但我明白了

TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)

要么

TypeError: unhashable type: 'set'
Run Code Online (Sandbox Code Playgroud)

是否可以在Python中拥有一组集合?

我正在处理大量的集合,我希望能够不必处理重复的集合(集合A1,A2,......的集合B,如果Ai = Aj,则会"取消"两个集合)

a3n*_*3nm 106

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


Sal*_*ali 49

人们已经提到你可以使用frozenset()来做这个,所以我只想添加一个代码来实现这个:

例如,您想要从以下列表列表中创建一组集合:

t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]
Run Code Online (Sandbox Code Playgroud)

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

t1 = set(frozenset(i) for i in t)
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以使用地图!`set(map(frozenset,t))` (8认同)

Ign*_*ams 20

frozenset在里面使用.

  • 也许你可以在Python中给出一些关于可变/不可变对象的指针,因为他是新的? (9认同)
  • 可持续性和可变性不一定是相互排斥的.只是碰巧大多数基本的Python类型共享一个模式. (7认同)
  • @Seth:我可以,但可变性不是一个因素. (2认同)

Ati*_*ioA 5

截至 2020 年,官方 Python 文档建议使用frozenset来表示集合。