Pythonでシーケンス内の2番目に多く繰り返される単語を検索する方法
文字列(単語のシーケンス)が与えられたとき、その中から2番目に多く繰り返される単語を見つけるのが本記事の目的です。Pythonでは Counter(iterator) を使うことで、単語をキー、出現回数を値とする辞書を簡単に作成できます。
アルゴリズム
処理の流れは以下のステップになります。
Step 1: ユーザー定義のリストを作成する。 Step 2: リストを辞書(Counterオブジェクト)に変換する。 Step 3: 辞書の値(出現回数)を取得し、降順にソートする。 Step 4: ソート後の2番目の要素が「2番目に多い出現回数」となる。 Step 5: 辞書全体を再度走査し、値が2番目の出現回数と一致するキーを表示する。
サンプルコード
# Pythonでシーケンス内の2番目に多く繰り返される単語を出力する
from collections import Counter
def second_repeatation(A):
# リストを辞書(Counter)に変換
con = Counter(A)
# 出現回数を降順にソート
res = sorted(con.values(), reverse=True)
# 2番目に大きい値を取得
maxi = res[1]
# 該当するキーを検索して表示
for (key, val) in con.items():
if val == maxi:
print("Second most repeated word ::>", key)
return
# ドライバープログラム
if __name__ == "__main__":
A = list() # ユーザー定義リストを作成
n = int(input("Enter the size of the List ::"))
print("Enter the word ::")
for i in range(int(n)):
k = input("")
A.append(k)
second_repeatation(A) # 関数を呼び出す
実行結果
Enter the size of the List ::4 Enter the word :: aa bb aa cc Second most repeated word ::> bb
処理の解説
この例では、入力された単語は aa・bb・aa・cc の4つです。Counter によって各単語の出現回数は次のようになります。
aa: 2回(最も多い)bb: 1回(2番目に多い)cc: 1回(2番目に多い)
降順ソート後の値は [2, 1, 1] となり、2番目の要素である 1 が「2番目に多い出現回数」です。辞書を走査すると、最初に値が 1 と一致するキーとして bb が見つかるため、これが出力されます。
なお、同率の単語が複数存在する場合、このコードでは辞書の挿入順に最初に見つかった1つだけを表示して処理を終了します。すべての候補を表示したい場合は、return を外して条件に合うキーをすべて出力するように変更してください。
-
Androidでシーケンス内の2番目に多く繰り返される文字列を検索する方法
このチュートリアルでは、Androidアプリで文字列の配列(シーケンス)の中から、2番目に多く繰り返される文字列を検索し、画面に表示する方法を解説します。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 ステップ2:activity_main.xmlにコードを追加する res/layout/activity_main.xml に以下のコードを記述します。 <?xml version="1.0" encodin
-
Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで
Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5