繁体   English   中英

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

[英]How can I create a Set of Sets in Python?

我正在尝试在Python中制作一套。我不知道该怎么做。

从空集xx开始:

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

但我明白了

TypeError: unhashable type: 'list'

要么

TypeError: unhashable type: 'set'

可不可以Python一套套?

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

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

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

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

t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]

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

t1 = set(frozenset(i) for i in t)

在里面使用frozenset

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

所以我遇到了完全相同的问题。 我想制作一个作为一组集合工作的数据结构。 问题是集合必须包含不可变对象。 因此,您可以做的只是将其作为一组元组。 这对我来说很好用!

A = set()
A.add( (2,3,4) )##adds the element
A.add( (2,3,4) )##does not add the same element
A.add( (2,3,5) )##adds the element, because it is different!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM