Python でリストと辞書をソートする方法

ソートはプログラミングにおける基本的な操作であり、データを希望の順序で整理することができます。Python にはリストと辞書をソートするための強力なツールが用意されており、データを効率的に操作することが容易になります。この記事では、さまざまな方法と例を含め、Python でリストと辞書の両方をソートする方法を説明します。

リストの並べ替え

リストは、Python で最もよく使用されるデータ構造の 1 つです。組み込みの sort() メソッドまたは sorted() 関数を使用して、リストを並べ替えることができます。各メソッドの動作は次のとおりです。

sort() の使用

sort() メソッドはリストをその場で並べ替えます。つまり、元のリストを変更し、新しいリストを返しません。デフォルトでは、昇順で並べ替えます。

# Example: Sorting a list in ascending order
numbers = [4, 2, 9, 1, 5]
numbers.sort()
print(numbers)  # Output: [1, 2, 4, 5, 9]

# Example: Sorting a list in descending order
numbers = [4, 2, 9, 1, 5]
numbers.sort(reverse=True)
print(numbers)  # Output: [9, 5, 4, 2, 1]

上記の例では、sort() メソッドは、reverse=True パラメータを使用して、リスト numbers を最初に昇順で並べ替え、次に降順で並べ替えます。

sorted() の使用

sorted() 関数は、新しいソートされたリストを返しますが、元のリストは変更されません。また、reverse パラメータを使用してソート順序を指定することもできます。

# Example: Using sorted() to get a new sorted list
numbers = [4, 2, 9, 1, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # Output: [1, 2, 4, 5, 9]
print(numbers)  # Output: [4, 2, 9, 1, 5] (original list is unchanged)

# Example: Using sorted() to get a new sorted list in descending order
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # Output: [9, 5, 4, 2, 1]

ここで、sorted() は、元の numbers リストを変更せずに、新しいリスト sorted_numbers を返します。また、reverse=True パラメータを使用して降順で並べ替えることもできます。

辞書の並べ替え

辞書をソートするには、辞書をキーまたは値でソートする必要があります。リストとは異なり、辞書は Python 3.7 までは本質的に順序付けされていませんでしたが、挿入順序が保持されるようになりました。辞書をソートする方法は次のとおりです。

キーによる並べ替え

辞書をキーでソートするには、辞書の理解またはループとともに sorted() 関数を使用します。

# Example: Sorting a dictionary by keys
data = {'banana': 3, 'apple': 4, 'orange': 2}
sorted_by_keys = {key: data[key] for key in sorted(data)}
print(sorted_by_keys)  # Output: {'apple': 4, 'banana': 3, 'orange': 2}

この例では、辞書 data がキーでソートされ、キーが昇順になった新しい辞書 sorted_by_keys が生成されます。

値による並べ替え

辞書を値で並べ替えるには、辞書の項目に対して sorted() 関数を使用して、新しい辞書を作成します。

# Example: Sorting a dictionary by values
data = {'banana': 3, 'apple': 4, 'orange': 2}
sorted_by_values = dict(sorted(data.items(), key=lambda item: item[1]))
print(sorted_by_values)  # Output: {'orange': 2, 'banana': 3, 'apple': 4}

ここで、data.items() はタプルのリストを返し、sorted() はラムダ関数を使用してこれらのタプルを 2 番目の要素 (値) でソートするために使用されます。結果は、値が昇順の新しい辞書 sorted_by_values になります。

結論

Python でリストと辞書をソートするのは、リスト用の sort() メソッドと sorted() 関数、および辞書用のさまざまなテクニックのおかげで、簡単かつ強力です。これらのメソッドを理解することで、データをより効果的に管理および分析できるようになります。これらのソート テクニックを試して、自分のプロジェクトにどのように適用できるかを確認してください。