在 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