Python – 文字列リストを特定文字(K)の出現頻度で並べ替える方法
文字列のリストを、特定の文字「K」の出現回数に基づいて並べ替えたい場合があります。Pythonでは、組み込みの sorted メソッドと lambda(ラムダ)関数 を組み合わせることで、この処理を簡潔に実現できます。
サンプルコード
以下に具体的な実装例を示します。
my_list = ['Hi', 'Will', 'Jack', 'Python', 'Bill', 'Mills', 'goodwill']
print("元のリスト : ")
print(my_list)
my_list.sort()
print("昇順ソート後のリスト : ")
print(my_list)
K = 'l'
print("K の値 : ")
print(K)
my_result = sorted(my_list, key = lambda ele: -ele.count(K))
print("結果のリスト : ")
print(my_result)
出力結果
元のリスト : ['Hi', 'Will', 'Jack', 'Python', 'Bill', 'Mills', 'goodwill'] 昇順ソート後のリスト : ['Bill', 'Hi', 'Jack', 'Mills', 'Python', 'Will', 'goodwill'] K の値 : l 結果のリスト : ['Bill', 'Mills', 'Will', 'goodwill', 'Hi', 'Jack', 'Python']
コードの解説
まず、文字列のリストを定義し、コンソールに表示します。
sort()メソッドを使ってリストを昇順に並べ替え、その結果を表示します。これは後続の処理で同頻度の場合の順序を安定させるためです。カウント対象となる文字「K」を初期化し、コンソールに表示します。
sortedメソッドを使用してリストを並べ替えます。ここでkey引数に lambda 関数を指定し、各要素内の「K」の出現回数をカウントした値をソート基準としています。ポイントは
-ele.count(K)のようにマイナス符号を付けている点です。これにより、出現回数が多い要素ほど先頭に来る「降順」の並び替えが実現されます。最終的な結果は変数に代入され、コンソールに出力されます。
この手法を使えば、アルファベット順などの通常のソートとは異なり、「特定の文字がどれだけ含まれているか」という独自の基準でリストを柔軟に並べ替えることができます。
-
Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで
Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5
-
Pythonで日付文字列のリストを並べ替える方法
Pythonで日付形式の文字列が格納されたリストを正しく並べ替えるには、sort関数を使うだけでは不十分です。日付文字列は辞書順に比較されるため、そのままソートすると意図した順序になりません。そこで、各日付文字列をdatetimeオブジェクトに変換し、その値を基準にソートする必要があります。具体的には、sort関数のkey引数を利用します。key引数にはラムダ式(無名関数)を渡し、その中でdatetime.strptime()を使って各日付文字列をdatetimeオブジェクトに変換します。こうすることで、Pythonはこのdatetimeオブジェクト同士を比較してリストを時系列順に並べ替えてく