Pythonで複数の辞書(dict)をマージする方法【update()・アンパッキング・|演算子】
Pythonでは、複数の辞書(dict)オブジェクトを1つにまとめたい場面がよくあります。この記事では、代表的なマージ方法である update() メソッドの使い方を中心に、より簡潔に記述できるモダンな手法もあわせて解説します。
update()メソッドを使った基本的なマージ方法
まず、マージしたいすべての辞書オブジェクトをリストに格納します。次に、結果を格納するための空の辞書を用意し、リスト内の各辞書に対して update() メソッドを順番に呼び出していきます。
手順
- すべての辞書オブジェクトをリストに入れる
- 空の辞書を初期化する(これがマージ結果の入れ物になる)
- リストから各辞書を取り出し、
update()で空の辞書に反映していく
実行例
>>> d = [{'a': 1, 'b': 2, 'c': 3}, {'a': 1, 'd': 2, 'c': 'foo'}, {'e': 57, 'c': 3}]
>>> d
[{'a': 1, 'b': 2, 'c': 3}, {'a': 1, 'd': 2, 'c': 'foo'}, {'e': 57, 'c': 3}]
>>> merged = {}
>>> for x in d:
merged.update(x)
>>> merged
{'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 57}
注意点: 同じキーが複数の辞書に存在する場合、後から update() された値で上書きされます。上の例では、キー 'c' の最終的な値は最後の辞書の 3 になっています。
辞書アンパッキング(**)を使う方法
Python 3.5以降では、** を使ったアンパッキング構文で、1行で複数の辞書をマージできます。
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'b': 3, 'c': 4}
>>> merged = {**d1, **d2}
>>> merged
{'a': 1, 'b': 3, 'c': 4}
| 演算子を使う方法(Python 3.9以降)
Python 3.9からは、辞書同士を | 演算子で直接結合できるようになりました。さらに簡潔で読みやすいコードになります。
>>> merged = d1 | d2
>>> merged
{'a': 1, 'b': 3, 'c': 4}
右側の辞書の値が優先される点は update() と同じです。また、既存の辞書を更新したい場合は |= 演算子も利用できます。
まとめ
- update()メソッド: 任意の個数の辞書をループで順次マージできる、汎用的な方法
- **アンパッキング: Python 3.5以降で使える、1行で書ける方法
- | 演算子: Python 3.9以降で使える、最も直感的な方法
用途や使用しているPythonのバージョンに応じて、最適な方法を選択しましょう。
-
Pythonでフォルダ内のすべてのExcelファイルを一括マージする方法
Pythonを使えば、フォルダ内に散らばった複数のExcelファイルをわずか数行のコードで1つのファイルにまとめることができます。本記事では、標準ライブラリのglobモジュールと、データ分析に欠かせないpandasを組み合わせて、Excelファイルを一括結合する手順を詳しく解説します。 前提条件:必要なパッケージのインストール まず、Excelファイルを読み書きするために以下のパッケージが必要です。まだインストールしていない場合は、pipコマンドで導入しておきましょう。 pip install openpyxl xlrd openpyxl:xlsx形式(Excel 2007以降)の読み書きに
-
【Python入門】Matplotlibで複数のグラフを1つの図に組み合わせる方法(subplot・twinx活用)
はじめに Matplotlibは、同じグラフ上に複数のプロットを重ねて描画できる強力なPythonの可視化ライブラリです。本チュートリアルでは、2つの異なるY軸を使いながら、1つの図の中に複数のデータを組み合わせて表示する方法を、実際に動くコード例とともにわかりやすく解説します。 事前準備:Matplotlibのインストール まず、Pythonのコマンドプロンプト(ターミナル)を開き、以下のコマンドでmatplotlibをインストールしてください。 pip install matplotlib 手順1:表示するデータを準備する ここでは、iPhone・Galaxy・Pixelの3機種につい