在 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