Pythonで単語を辞書式順序に並べ替える方法
辞書式順序(レキシコグラフィカル順)とは
単語を辞書式順序で並べ替えるとは、まず単語の1文字目を基準に並べ、1文字目が同じ単語同士はそのグループ内で2文字目を基準に並べ替えるというように、実際の言語の辞書(データ構造の「辞書」ではなく)と同じ規則で整列することを指します。
Pythonにはこのような並べ替えを行うための機能として、sort() と sorted() の2つのメソッドが用意されています。それぞれの使い方と、どのような場面でどちらを使うべきかを見ていきましょう。
その場でソートする:sort() メソッド
元のリスト自体の順序を直接変更してよい場合(インプレースソート)は、sort() メソッドをそのまま使います。例えば以下のようになります。
my_arr = [
"hello",
"apple",
"actor",
"people",
"dog"
]
print(my_arr)
my_arr.sort()
print(my_arr)実行結果は次の通りです。
['hello', 'apple', 'actor', 'people', 'dog'] ['actor', 'apple', 'dog', 'hello', 'people']
ご覧のとおり、元のリスト my_arr 自体が変更されています。
新しいリストを作成する:sorted() 関数
元のリストはそのまま保持し、ソート結果を別の新しいリストとして取得したい場合は、sorted() 関数を使用します。この関数は元のリストを変更せず、ソート済みの新しいリストを返します。
my_arr = [
"hello",
"apple",
"actor",
"people",
"dog"
]
print(my_arr)
# sorted() を使って新しいリストを作成
new_arr = sorted(my_arr)
print(new_arr)
# my_arr は変更されず、ソート結果が new_arr に代入される
print(my_arr)実行結果は次の通りです。
['hello', 'apple', 'actor', 'people', 'dog'] ['actor', 'apple', 'dog', 'hello', 'people'] ['hello', 'apple', 'actor', 'people', 'dog']
このように、sorted() を使った場合は元のリストは一切変更されていないことが確認できます。
使い分けのポイント
メモリ効率を重視し、元のデータを上書きしてよいなら sort()、元のデータを保持したまま新しいソート済みリストが必要なら sorted() を選ぶのが基本です。状況に応じて適切な方を使い分けましょう。
-
Pythonで単語をアルファベット順に並べ替える方法
文字列オブジェクトに複数の単語が1つのスペースで区切られて含まれている場合、Pythonでは簡単な手順でアルファベット順に並べ替えることができます。まず文字列クラスの split() メソッドを使うと、スペースで区切られた単語がリストとして返されます。その後、組み込みリストクラスの sort() メソッドを呼び出すことで、このリストをソートできます。基本的な手順以下は、文字列内の単語をアルファベット順に並べ替える具体的な例です。>>> string = Hello how are you? >>> word_list = string.split() >
-
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()を呼び