Day 146辞書で逆引きインデックスを作る
Pythonコード
1fruits = {'apple': 1, 'banana': 2, 'cherry': 3}2reverse_index = {}3for key, value in fruits.items():4 if value not in reverse_index:5 reverse_index[value] = [key]6 else:7 reverse_index[value].append(key)8print(reverse_index)9 10# 例: 値で検索する11search_value = 212try:13 search_value = int(input('値を入力してください: '))14except ValueError:15 print('数値以外の入力です。')16 search_value = 2 # デフォルト値17print(f'値{search_value}のキー: {reverse_index.get(search_value, [])}')
解説
- 行1〜3: まず、辞書`fruits`を作成します。この辞書には、フルーツの名前がキーで、値はそれぞれのIDになります。次に、空の辞書`reverse_index`を作成します。この辞書は、値をキーにしてキーを値にした逆引きインデックスになります。組み込み関数`dict()`は、辞書を作成する関数です。
- 行4〜7: 辞書`fruits`の各キーと値のペアをループで回します。値が`reverse_index`にまだない場合、値をキーにしてキーを値のリストに追加します。値がすでに`reverse_index`にある場合、キーをその値のリストに追加します。組み込み関数`items()`は、辞書のキーと値のペアを取得する関数です。
- 行8: 逆引きインデックス`reverse_index`を出力します。組み込み関数`print()`は、画面に文字や値を表示する関数です。
- 行10〜15: 例として、値で検索する機能を実装します。入力された値で`reverse_index`からキーを探します。入力ミスを避けるために、`try/except`で数値以外の入力を捕捉します。組み込み関数`input()`は、ユーザーの入力を取得する関数です。組み込み関数`int()`は、文字列を整数に変換する関数です。
- 行16〜17: 検索結果を出力します。値が見つからなかった場合は空のリストを表示します。組み込み関数`get()`は、辞書の値を取得する関数です。
次に試してみよう
- 辞書の値にリストや辞書を含めることで、より複雑なデータ構造を作成してみましょう。
- 入力された値で検索する機能を、よりユーザーフレンドリーな方法で実装してみましょう。
- 逆引きインデックスを使用して、データの集計や分析を行うプログラムを作成してみましょう。