Pythonには、様々なデータ構造がありますが、その中でもリスト、タプル、辞書のソートについて解説します。

リストのソート

リストのソートには、sort()関数を使用します。この関数は、リスト自身を破壊的に変更することに注意してください。

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] numbers.sort() print(numbers)

出力結果:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

また、sort()関数にreverse=Trueを渡すことで、逆順にソートすることもできます。

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] numbers.sort(reverse=True) print(numbers)

出力結果:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

リストが文字列の場合、アルファベット順でソートされます。

words = ["Python", "is", "a", "great", "programming", "language"] words.sort() print(words)

出力結果:

['Python', 'a', 'great', 'is', 'language', 'programming']

タプルのソート

タプルはイミュータブルなので、リストと同じようにsort()関数を使用することはできません。代わりに、sorted()関数を使用します。

numbers = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5) sorted_numbers = sorted(numbers) print(sorted_numbers)

出力結果:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

リストと同様に、reverse=Trueを渡すことで逆順にソートすることができます。

numbers = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5) sorted_numbers = sorted(numbers, reverse=True) print(sorted_numbers)

出力結果:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

辞書のソート

辞書は順序を持たないため、ソートすることはできません。ただし、辞書のキーまたは値をソートすることはできます。

fruits = {"apple": 3, "banana": 1, "orange": 2, "kiwi": 5} sorted_fruits = sorted(fruits.items()) print(sorted_fruits)

出力結果:

[('apple', 3), ('banana', 1), ('kiwi', 5), ('orange', 2)]

辞書のitems()メソッドを使用することで、キーと値の両方を含むタプルのリストが得られます。このリストをsorted()関数を使ってソートすることができます。デフォルトでは、タプルの最初の要素(キー)を基準にソートされます。

キーまたは値を基準にソートする場合は、key引数を使用します。

fruits = {"apple": 3, "banana": 1, "orange": 2, "kiwi": 5} sorted_fruits_by_value = sorted(fruits.items(), key=lambda x: x[1]) print(sorted_fruits_by_value)

出力結果:

[('banana', 1), ('orange', 2), ('apple', 3), ('kiwi', 5)]

この例では、lambda関数を使って、タプルの2番目の要素(値)を基準にソートしています。

以上が、リスト、タプル、辞書のソートについての解説でした。

リンク

Sorting lists, tuples, and dictionaries[EN]