リスト内に複数検索したい文字列がある場合、どう検索をしてそれぞれ何個あるのか集計する必要があった時に調べた方法です。
リスト内の複数の要素を検索し、そのインデックスを取得する方法
サンプルコード
fruits_list = ["りんご", "バナナ", "さくらんぼ", "りんご", "さくらんぼ"]
search_items = ["りんご", "さくらんぼ"]
found_indexes = {item: [] for item in fruits_list}
for i, item in enumerate(fruits_list):
if item in fruits_list:
found_indexes[item].append(i)
print(found_indexes)
実行結果
{'りんご': [0, 3], 'バナナ': [1], 'さくらんぼ': [2, 4]}
解説
上記のコードでは、リストの中から指定した複数の要素(「りんご」と「さくらんぼ」)を検索し、それぞれの要素が見つかった位置のインデックス番号を取得しています。
「fruits_list」では検索対象のリストを格納し、「search_items」には検索する複数のキーワードを格納しています。
変数の「found_indexes
」は辞書型で、各検索要素に対して見つかったインデックスを保存するために使用します。
enumerate(fruits_list)
を使用して、リスト内の各要素とインデックス(i)を取得します。
ループ内で、if item in search_items
を使って、現在の要素がsearch_items
に含まれているかを確認しています。
含まれている場合に、その要素の名前をキーとして、そのインデックスをfound_indexes
辞書に追加しています。
結果取得するために最後にprint(found_indexes)
を使い、検索した要素ごとに見つかった全てのインデックスを出力しています。