在 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'])
我们使用联合运算符 |
计算了集合 setABC
和 setDEF
的并集在上面的代码中。下面的程序向我们展示了如何在有序集上执行交集。
from ordered_set import OrderedSet
setABC = OrderedSet(['A', 'B', 'C', 'D'])
setDEF = OrderedSet(['D','E','F','G'])
solutionSet = setABC & setDEF
print(solutionSet)
输出:
OrderedSet(['D'])
我们用上面代码中的交集运算符 &
计算了集合 setABC
和 setDEF
的交集。下面的代码示例向我们展示了如何计算两个有序集合之间的差异。
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'])
我们在上面的代码中使用差分运算符 -
计算了集合 setABC
和 setDEF
的差异。
默认情况下,Python 不支持有序集。不过,我们可以安装一个外部包,ordered-set
,它为我们提供了创建有序集的功能。Python 2.6 及更高版本支持此过程。
这些有序集合是 Python 中原始列表和集合的混合体。所以,我们必须用一个列表来初始化这些集合。这些新集合为我们提供了集合的所有常用功能,例如并集、交集和差集。
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