在 Python 中建立有序集合

Muhammad Maisam Abbas 2023年10月10日
在 Python 中建立有序集合

本教程將討論 Python 中的 OrderedSet 類。

使用 Python 中的 OrderedSet 類建立有序集

首先,讓我們先定義集合在 Python 中的含義。它是一個明確定義的不同物件的集合,這些物件以某種方式相關。這個定義不包含任何順序。因此,根據定義,集合中沒有順序。

但是,如果出現這種情況,我們必須保留集合元素的原始順序,我們可以使用 OrderedSet 類。要使用 OrderedSet 類,我們必須首先使用 Python 包管理器在我們的裝置上安裝 ordered-set。下面給出了安裝 ordered-set 包的命令。

pip install ordered-set

現在,我們可以建立一個集合來保留每個集合元素的順序。下面的程式演示了這個過程。

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C"])
print(setABC)

輸出:

OrderedSet(['A', 'B', 'C'])

我們建立了一個有序集合,並使用上面程式碼中的 OrderedSet 類按順序顯示每個索引處的值。這個 OrderedSet 是一個可變資料結構,它是列表和集合資料結構的混合體。所以,我們必須用一個列表來初始化這個集合;這樣,集合會保留每個元素的索引。

為了簡化索引,add() 函式返回新增到集合中的新元素的索引;這在下面的以下過程中顯示。

print(setABC.add("D"))

輸出:

3

我們向 setABC 新增了另一個元素,並在上面的程式碼中顯示了 add() 函式返回的值。我們還可以使用 index() 函式獲取特定元素的索引;這顯示在以下程式碼片段中。

print(setABC.index("C"))

輸出:

2

我們使用上面程式碼中的 index() 函式檢索了 setABC 集合中元素 C 的索引。我們還可以分別使用 |&- 運算子對這些有序集合執行集合的通常操作,例如並集、交集和差集。

下面的程式碼示例演示瞭如何對有序集合執行聯合。

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC | setDEF
print(solutionSet)

輸出:

OrderedSet(['A', 'B', 'C', 'D', 'E', 'F', 'G'])

我們使用聯合運算子 | 計算了集合 setABCsetDEF 的並集在上面的程式碼中。下面的程式向我們展示瞭如何在有序集上執行交集。

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC & setDEF
print(solutionSet)

輸出:

OrderedSet(['D'])

我們用上面程式碼中的交集運算子 & 計算了集合 setABCsetDEF 的交集。下面的程式碼示例向我們展示瞭如何計算兩個有序集合之間的差異。

from ordered_set import OrderedSet

setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC - setDEF
print(solutionSet)

輸出:

OrderedSet(['A', 'B', 'C'])

我們在上面的程式碼中使用差分運算子 - 計算了集合 setABCsetDEF 的差異。

預設情況下,Python 不支援有序集。不過,我們可以安裝一個外部包,ordered-set,它為我們提供了建立有序集的功能。Python 2.6 及更高版本支援此過程。

這些有序集合是 Python 中原始列表和集合的混合體。所以,我們必須用一個列表來初始化這些集合。這些新集合為我們提供了集合的所有常用功能,例如並集、交集和差集。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Python Set