在 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