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

Pythonで2つの辞書(dict)をマージする方法【update()と**演算子】

このチュートリアルでは、Pythonで2つの辞書(dict)を1つに結合する方法を解説します。辞書のマージにはいくつかの方法がありますが、ここでは代表的な2つの手法をサンプルコード付きで紹介します。

update()メソッドを使う方法

まずは、辞書に組み込まれているupdate()メソッドを使う方法です。update()メソッドは戻り値としてNoneを返し、呼び出し元の辞書そのものを直接更新して2つの辞書を1つにまとめます。具体的なプログラムを見てみましょう。

サンプルコード

## 辞書の初期化
fruits = {"apple": 2, "orange": 3, "tangerine": 5}
dry_fruits = {"cashew": 3, "almond": 4, "pistachio": 6}
## fruits辞書を更新
fruits.update(dry_fruits)
## fruits辞書を出力
## 両方のキーと値のペアが含まれています
print(fruits)

上記のプログラムを実行すると、次のような結果になります。

実行結果

{'apple': 2, 'orange': 3, 'tangerine': 5, 'cashew': 3, 'almond': 4, 'pistachio': 6}

update()メソッドは元の辞書を破壊的に変更する点に注意してください。元の辞書を後でも使いたい場合は、あらかじめcopy()メソッドなどでコピーを作成しておくと安全です。

**演算子を使う方法

**演算子は、特定の場面で辞書をアンパック(展開)するために使われます。ここでは、この性質を利用して2つの辞書を1つに結合します。

サンプルコード

## 辞書の初期化
fruits = {"apple": 2, "orange": 3, "tangerine": 5}
dry_fruits = {"cashew": 3, "almond": 4, "pistachio": 6}
## 2つの辞書を結合
new_dictionary = {**dry_fruits, **fruits}
print(new_dictionary)

上記のプログラムを実行すると、次のような結果になります。

実行結果

{'cashew': 3, 'almond': 4, 'pistachio': 6, 'apple': 2, 'orange': 3, 'tangerine': 5}

**演算子によるマージはPython 3.5以降で使用できます。新しい辞書オブジェクトが生成されるため、元の辞書は変更されないのが特徴です。

補足:|演算子(Python 3.9以降)

Python 3.9以降では、さらに簡潔に書けるマージ演算子「|」が導入されました。次のように1行で辞書を結合できます。

merged = fruits | dry_fruits

まとめ

筆者としては、元の辞書を変更せずに済む2番目の方法(**演算子)の方が好みですが、どちらの方法を選ぶかは状況や好み次第です。なお、両方の辞書に同じキーが存在する場合は、後に指定した辞書の値で上書きされる点も覚えておきましょう。

このチュートリアルについて不明な点や疑問がある場合は、ぜひコメント欄でお知らせください。

  1. Pythonでマージソートを実装する方法を徹底解説!サンプルコード付き

    この記事では、マージソート(Merge Sort)のアルゴリズムを使って配列を並べ替えるPythonプログラムについて、実際のコード例を交えながら詳しく解説します。 問題設定 課題 − 与えられた配列を、マージソートの考え方を用いて昇順に並べ替えます。 マージソートは分割統治法に基づく整列アルゴリズムです。まず配列を半分ずつ再帰的に分割し、要素が1つになった時点でそれを「ソート済み」とみなします。その後、隣り合う部分配列同士を先頭から比較しながら統合(マージ)していくことで、最終的に配列全体が整列されます。 Pythonでの実装例 # マージ関数 def merge(arr, l, m,

  2. Pythonで2つの辞書を1つの式でマージする方法

    Pythonで2つの辞書を1つに結合(マージ)したい場面はよくあります。ここでは、代表的な2つの方法をサンプルコード付きでわかりやすく解説します。 update()メソッドを使う方法 組み込みの辞書(dict)クラスにはupdate()メソッドが用意されています。このメソッドは、引数として渡した辞書オブジェクトの要素を、呼び出し元の辞書オブジェクトに統合します。なお、元の辞書そのものが更新される点に注意してください。 >>> a = {1:a, 2:b, 3:c} >>> b = {x:1, y:2, z:3} >>> a.updat