在 Python 中创建集合的集合
Vaibhav Vaibhav
2021年12月4日
作为程序员,应该对数据结构有一定的了解。计算机科学中有很多数据结构,其中数组和集合很容易理解。由于本文不是关于数据结构的,我们不会深入研究它们,而是专门讨论集合。
在 Python 中,我们可以创建数组数组或列表列表。然而,这不适用于集合。我们无法在 Python 中创建集合的集合。你不相信吗?试试下面的代码。
print({{1, 2}, {2, 3}})
上面的代码会抛出错误,如下。
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: unhashable type: 'set'
由于集合是可变的,它们不能被散列。由于集合需要可哈希值来保持唯一性并拒绝重复值,因此我们无法以这种方式创建集合。相反,我们必须遵循一些不同的方法。
可变意味着数据结构的内容可以改变,而不可变意味着数据结构的内容不能改变。可变数据结构的一些示例是列表、集合和字典。并且,不可变数据结构的一些示例是字符串、frozenset
和元组。
Hashable 是指数据结构可以表示为内存内部唯一的字符串,而 unhashable 是指数据结构不能表示为内存内部唯一的字符串。
在 Python 中使用 frozenset
创建一组集合
frozenset
是一种在 Python 中预先构建的集合。frozenset
和集合执行相同的功能:存储唯一值并拒绝添加到它们中的重复值。然而,一个 frozenset
是不可变和可散列的,而一个集合是可变且不可散列的。由于 frozenset
是不可变的,它可以用作字典中的键并存储在集合中,因为集合只能存储不可变的值。让我们用一些 Python 代码更好地理解这一点。
a = set([frozenset([1, 2]), frozenset([2, 3]), frozenset([3, 4])])
print(a)
上面代码的输出如下。
{frozenset({3, 4}), frozenset({2, 3}), frozenset({1, 2})}
要了解有关 frozenset
的更多信息,请参阅官方 Python 文档。
Author: Vaibhav Vaibhav