Pythonでは、sorted()
関数とlambda
式を組み合わせることで、複数のキーを使ってリストをソートすることができます。以下に具体的な手順を示します。
まず、ソートしたいリストを用意します。ここでは、商品名とその価格、在庫数を要素に持つ2次元リストを考えてみましょう。
data = [['きゅうり',1,4],['いちご',2,6],['にんじん',2,1],['とうふ',1,0]]
このリストを、価格と在庫数をキーにして昇順にソートするには、以下のようにsorted()
関数とlambda
式を使います。
sorted_data = sorted(data, key=lambda x:(x[1], x[2]))
print(sorted_data)
# Output: [['とうふ',1,0],['きゅうり',1,4],['にんじん',2,1],['いちご',2,6]]
このコードでは、lambda
式lambda x:(x[1], x[2])
が新しいソートキーを生成しています。この式は、リストの各要素(ここでは['きゅうり',1,4]
など)を入力として受け取り、その1番目と2番目の要素(ここでは1
と4
)をタプルとして返します。sorted()
関数は、このタプルを使ってリストの要素を比較し、リストを昇順にソートします。
なお、降順にソートしたい場合は、sorted()
関数のreverse
引数をTrue
に設定します。
sorted_data = sorted(data, key=lambda x:(x[1], x[2]), reverse=True)
print(sorted_data)
# Output: [['いちご',2,6],['にんじん',2,1],['きゅうり',1,4],['とうふ',1,0]]
以上が、Pythonで複数キーを使ってリストをソートする方法です。このテクニックは、データ分析やアルゴリズムの実装など、様々な場面で役立つでしょう。