Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python | 2番目のリストを基準に最初のリストの値を並べ替える方法

Pythonでは、2番目のリストを基準として最初のリストの値を並べ替えたい場合、「sorted」メソッドと「zip」関数を組み合わせることで簡単に実現できます。

リストは、整数・浮動小数点数・文字列など、さまざまなデータ型の値(異種の値)をひとつにまとめて格納できる便利なデータ構造です。

  • sortedメソッド:リストの要素を昇順に並べ替えるために使用します。
  • zip関数:複数のイテラブルを受け取り、対応する要素同士をタプルとして集約した結果を返します。

以下に具体的な実装例を示します。

サンプルコード

def list_sort(my_list_1, my_list_2):
   zipped_list_pairs = zip(my_list_2, my_list_1)
   my_result = [x for _, x in sorted(zipped_list_pairs)]
   return my_result
my_list_1 = ['m', 'o', 'p', 'l', 'k', 'v', 'c', 'e', 'r']
my_list_2 = [ 1, 0,0, 2, 2, 1, 1, 0,0]
print("The first list is :")
print(my_list_1)
print("The second list is :")
print(my_list_2)
print("The first list is being sorted based on second list")
print(list_sort(my_list_1, my_list_2))
my_list_3 = ['h', 'k', 'l', 'p', 'q', 'p', 'k', 'l', 'h', 'm', 'u', 'z', 'f', 't']
my_list_4 = [ 0,1,1,1,0,2,2,2,0,2,1,2,1,0]
print("The third list is :")
print(my_list_3)
print("The fourth list is :")
print(my_list_4)
print("The third list is being sorted based on fourth list")
print(list_sort(my_list_3, my_list_4))

実行結果

The first list is :
['m', 'o', 'p', 'l', 'k', 'v', 'c', 'e', 'r']
The second list is :
[1, 0, 0, 2, 2, 1, 1, 0, 0]
The first list is being sorted based on second list
['e', 'o', 'p', 'r', 'c', 'm', 'v', 'k', 'l']
The third list is :
['h', 'k', 'l', 'p', 'q', 'p', 'k', 'l', 'h', 'm', 'u', 'z', 'f', 't']
The fourth list is :
[0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 1, 2, 1, 0]
The third list is being sorted based on fourth list
['h', 'h', 'q', 't', 'f', 'k', 'l', 'p', 'u', 'k', 'l', 'm', 'p', 'z']

コードの解説

  • まず、「list_sort」という名前の関数を定義し、引数として2つのリストを受け取ります。
  • 次に、zip関数を使って2つのリストの要素をペア(タプル)にまとめ、変数に格納します。このとき、並べ替えの基準となる2番目のリストを先頭に置くのがポイントです。
  • sorted関数でペア全体を並べ替えた後、リスト内包表記で元の要素だけを取り出し、新しい変数に代入します。
  • 最後に、並べ替え済みのリストを戻り値として返します。
  • サンプルとして2組のリストを定義し、それぞれコンソールに表示します。
  • 定義した関数を呼び出し、その結果をコンソールに出力します。

動作のポイント

この手法では、zip(my_list_2, my_list_1) のように基準となるリストを先頭に配置することで、sorted関数がタプルの1番目の要素(=2番目のリストの値)を優先的に比較し、それに連動して2番目の要素(=最初のリストの値)も一緒に並べ替えられます。また、for _, x in ... のアンパックにより、基準値を破棄して元のリストの値のみを取得している点も押さえておきましょう。

  1. Pythonで辞書の値をキーにして辞書のリストを並べ替える方法

    sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」

  2. Pythonでリストを並べ替える方法を解説!sortとsortedの使い分けからkey引数まで

    Pythonでは、整数・浮動小数点数・文字列などのリストは、sortメソッドを呼び出すだけで簡単に並べ替えができます。また、降順(逆順)でソートしたい場合は、reverseパラメータにTrueを指定するだけです。sortメソッドを使った基本的な並べ替えまずは、昇順と降順それぞれのソート例を見てみましょう。my_list = [1, 5, 2, 6, 0] my_list.sort() print(my_list) my_list.sort(reverse=True) print(my_list)出力結果[0, 1, 2, 5, 6] [6, 5, 2, 1, 0]このように、sort()を呼び