在 Python 中创建集合的集合

Vaibhav Vaibhav 2021年12月4日
在 Python 中创建集合的集合

作为程序员,应该对数据结构有一定的了解。计算机科学中有很多数据结构,其中数组和集合很容易理解。由于本文不是关于数据结构的,我们不会深入研究它们,而是专门讨论集合。

在 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 文档

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相关文章 - Python Set