Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで辞書の値とキーを反転してリストに変換する方法

Pythonでは、辞書のキーと値を入れ替えて、値をキー・元のキーをリストとして持つ新しい辞書を作成したい場面があります。そのような場合、シンプルなループ処理とappendメソッドを組み合わせることで実現できます。

以下に具体的な実装例を示します。

from collections import defaultdict

my_dict = {13: [12, 23], 22: [31], 34: [21], 44: [52, 31]}
print("元の辞書:")
print(my_dict)

my_result = defaultdict(list)
for keys, values in my_dict.items():
   for val in values:
      my_result[val].append(keys)

print("反転後の結果:")
print(dict(my_result))

実行結果

元の辞書:
{34: [21], 44: [52, 31], 13: [12, 23], 22: [31]}
反転後の結果:
{52: [44], 31: [44, 22], 12: [13], 21: [34], 23: [13]}

処理の解説

  • collectionsモジュールからdefaultdictをインポートし、必要なパッケージを環境に読み込みます。

  • 値としてリストを持つ辞書を定義し、コンソールに表示します。

  • defaultdict(list)を使って、存在しないキーにアクセスした際に自動的に空のリストが生成される辞書を作成します。

  • items()メソッドで辞書のキーと値(リスト)を取得し、二重のforループで各要素へ順番にアクセスします。

  • 内側のループで取り出した値を新しい辞書のキーとし、対応する元のキーをappendメソッドで追加していきます。

  • 最後にdict()で通常の辞書に変換し、結果をコンソールに出力します。

この手法を使えば、1つの値が複数のキーに関連付けられている場合でも、それらのキーがリスト形式でまとめられるため、逆引き用の辞書を簡単に構築できます。

  1. Pythonの辞書(ディクショナリ)からすべての値をリストとして取得する方法

    Pythonの辞書に格納されたすべての値をリスト形式で取得したい場合、最もシンプルな方法は dict.values() メソッドを使うことです。このメソッドは辞書内のすべての値を返すため、list() 関数で囲むことで簡単にリストへ変換できます。values() メソッドを使った基本的な例my_dict = {name: TutorialsPoint, time: 15 years, location: India} value_list = list(my_dict.values()) print(value_list)出力結果上記のコードを実行すると、次のような出力が得られます。[Tuto

  2. Pythonで辞書の値を更新する方法|update()メソッドの使い方を解説

    Pythonの組み込み型である辞書(dict)クラスには、update()メソッドが標準で用意されています。このメソッドは、別の辞書オブジェクトを引数として受け取り、呼び出し元の辞書にマージ(統合)することができます。 基本構文 D1.update(D2) 動作の仕組み D2の内容がD1に統合されます。このとき、キーの有無によって以下のように挙動が変わります。 D2のキーがD1にすでに存在する場合:そのキーの値がD2の値で上書き(更新)されます。 D2のキーがD1に存在しない場合:新しいキーと値のペアとしてD1に追加されます。 実行後、D1は更新された内容を保持します。 使用例 >&