ウェブサイト検索

タプルを値で並べ替える Python プログラム


この記事では、Python で値によってタプルを並べ替える方法について説明します。タプルはリストに似たデータ構造ですが、不変です。つまり、タプルが作成されると、その中の要素の値を変更することはできません。

以下はタプルを作成する例です。

tple = ("Hello", "world", "hi")
print(tple)

出力

(“Hello”, “world”, “hi”)

順序付けされた不変のトリプル項目は複数の値を持つことができます。 [0] のインデックスがトリプルの最初の項目に割り当てられ、[1] が 2 番目の項目に割り当てられます。

タプルをソートされていると呼ぶ場合、要素が特定の順序で配置されていることを意味します。

タプルは不変であるため、作成後にそのコンポーネントを変更、追加、または削除することはできません。

タプルでは重複値が許可されます-

tple = ("apple", "banana", "cherry", "apple", "cherry")
print(tple)

出力

(‘apple’, ‘banana’, ‘cherry’, ‘apple’, ‘cherry’

タプル内のキーと値

キーと値は、特定のオブジェクトの単一インスタンスを保持するためにのみ使用されるため、タプル内にペアとして存在することはあまりありません。一方、キーと値を含むタプルを作成するには、相互にネストされたタプルを作成する必要があります。

したがって、各タプルの最初の値はそのキーを表し、2 番目の値はその値を表します。

ListOfTuples = ((1, 4), (3, 5), (4, 5), (5, 6))

上記のコード行では、2 つのタプルが 1 つのタプル内に囲まれています。その結果、たとえば、外側のリストの最初の項目は 2 つの値を持つタプル になります。ここで、タプルのキーは値 1 で表され、そのデータ値は値 4 でそれぞれ表されます。

タプルへのアクセスにインデックスを使用できることを認識しているため、インデックスを使用して内部タプル要素およびキーと値にアクセスします。

print(ListOfTuples[0][0])

これにより、見つかった外側のリストの最初のタプルのキーが出力されます。しかし、外側のリストに含まれる要素の数がわからない場合はどうなるでしょうか?このようなシナリオでインデックスを使用して内部要素に到達しようとすると、タプルに存在しない要素にアクセスしようとしていることを示すインデックス範囲外エラーが発生する危険があります。

len() 関数の使用

この問題を解決するには、len 関数を使用して、外側のリストにある項目の数を確認してから、それらのコンポーネントのキーと値を出力します。

値は実際にはネストされたリストの 2 番目の要素であるため、タプル リストを並べ替える必要がある場合は、リスト内のすべてのタプルの 2 番目の要素である値を実際に比較し、それらの値をすべて比較する必要があることに注意してください。それらを並べ替えることができるでしょう。

値を何度も調べる必要があるため、ネストされた for ループが必要になります。そのアルゴリズムは次のようになります。

アルゴリズム

  • 2 つの値のタプルである要素を含むタプル リストを作成します。最初の値はキーで、2 番目の値はデータ要素です。

  • ソートする前にタプルリストを出力します。

  • 「for ループ」を使用して、リストの要素を 0 からそのリストの長さまで反復します。

  • 0 からリストの長さより 1 少ない長さまで実行する別のネストされたループを使用します。

  • 次に、現在の要素の値の部分が次の要素の値の部分より大きいかどうかを確認します。

  • はいの場合は、両方の要素とタプルを交換します。

  • 「いいえ」の場合は、次の要素に進みます。

tupleList = [(2, 5), (1, 3), (17, 27), (0, 5), (4, 1)]
print("The elements of tuple list before sorting by values are : ")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")
for i in range(len(tupleList)):
   for j in range(len(tupleList) - 1):
      if tupleList[j][1] > tupleList[j+1][1]:
         tupleList[j], tupleList[j+1] = tupleList[j+1], tupleList[j]
print("The elements of tuple list after sorting by values are : ")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")

出力

The elements of tuple list before sorting by values are :
Key : 2 Value : 5
Key : 1 Value : 3
Key : 17 Value : 27
Key : 0 Value : 5
Key : 4 Value : 1
The elements of tuple list after sorting by values are :
Key : 4 Value : 1
Key : 1 Value : 3
Key : 2 Value : 5
Key : 0 Value : 5
Key : 17 Value : 27

結論

この記事では、ネストされたループを使用してタプルを値で並べ替える方法について説明しました。あるいは、ラムダ関数 で sort メソッドを使用して、同じ問題に対する 1 行の解決策を記述することもできます。

TupleWithKeys.sort(key=lambda item: item[1])

上記の方法は、実際には問題を解決するための最も Python 的な方法です。

関連記事: