Python で順序セットを作成する

Muhammad Maisam Abbas 2023年10月10日
Python で順序セットを作成する

このチュートリアルでは、Python の OrderedSet クラスについて説明します。

Python で OrderedSet クラスを使用して順序セットを作成する

まず、Python でセットが何を意味するかを定義しましょう。これは、何らかの形で関連している個別のオブジェクトの明確に定義されたコレクションです。この定義には順序は含まれていません。したがって、定義上、セットには順序がありません。

ただし、セット要素の元の順序を保持する必要があるようなシナリオが発生した場合は、OrderedSet クラスを使用できます。OrderedSet クラスを使用するには、最初に ordered-set パッケージを Python パッケージマネージャーを使用してデバイスにインストールする必要があります。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 の共通部分演算子&との共通部分を計算しました。次のコード例は、2つの順序セット間の差を計算する方法を示しています。

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