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

Pythonでキーを使って2つの辞書の共通部分を求める方法

この記事では、Pythonでキーを使って2つの辞書を交差させる(共通部分を抽出する)方法を解説します。具体的には、両方の辞書に存在する共通のキーだけを持つ新しい辞書を作成します。まずは以下の例を見てみましょう。

入力:
dict_1 = {'A': 1, 'B': 2, 'C': 3}
dict_2 = {'A': 1, 'C': 4, 'D': 5}

出力:
{'A': 1, 'C': 3}

ここでは辞書内包表記を使ってこの問題を解決します。コードを書く手順は以下の通りです。

  • 2つの辞書を初期化する
  • 辞書1を反復処理し、辞書2にも存在するキーの要素を新しい辞書に追加する
  • 結果を出力する

例:辞書内包表記を使う方法

# 辞書の初期化
dict_1 = {'A': 1, 'B': 2, 'C': 3}
dict_2 = {'A': 1, 'C': 4, 'D': 5}

# 共通するキーを見つける
result = {key: dict_1[key] for key in dict_1 if key in dict_2}

# 結果の出力
print(result)

上記のコードを実行すると、次のような結果が出力されます。

出力

{'A': 1, 'C': 3}

この方法では、共通するキーをすべて抽出し、値はdict_1側のものが採用されます。そのため、キー「C」の値はdict_1の「3」となっている点に注目してください。

例:ビット演算子「&」を使う方法

ビット演算子「&」を使って解決することもできます。この方法では、辞書のitems()同士を比較して、共通するキーと対応する値をフィルタリングします。ただし重要な注意点として、キーだけでなく値も完全に一致している項目のみが抽出されます。

# 辞書の初期化
dict_1 = {'A': 1, 'B': 2, 'C': 3}
dict_2 = {'A': 1, 'C': 4, 'D': 5}

# キーと値の両方が一致するペアを見つける
result = dict(dict_1.items() & dict_2.items())

# 結果の出力
print(result)

上記のコードを実行すると、次のような結果が出力されます。

出力

{'A': 1}

キー「C」は両方の辞書に存在しますが、値が「3」と「4」で異なるため、この方法では除外されます。結果として、キーと値の両方が一致する「A: 1」のみが残ります。

まとめ

「共通するキーをすべて抽出したい」場合は辞書内包表記を、「キーと値が完全に一致する項目だけが必要」な場合はビット演算子「&」を使う方法が適しています。用途や好みに応じて、最適な方法を選択してください。ご不明な点があれば、コメント欄でお気軽にお尋ねください。

  1. Pythonで2つの辞書リストを比較する方法|差分の出力とPandas活用術

    この記事では、Pythonで2つの「辞書のリスト」を比較し、両者の差分を出力する方法を解説します。 ここで紹介する比較方法では、辞書内のキーと値の両方が比較対象になります。 また、Pythonで辞書のリスト同士を比較する場合、要素の並び順は結果に影響しません。キーと値の組み合わせが同じであれば、順序が異なっていても等しいものとして扱われます。 Pythonで辞書のリストを比較する基本方法 if __name__ == __main__: list_1 = [ {id: 123-abc, name: Mike, age: 40}, {name: John

  2. Pythonの辞書(dict)の使い方を徹底解説!作成・取得・追加・削除の基本

    辞書(Dictionary)は、Pythonで最もよく使われるマッピング型です。キーと値のペアでデータを管理できるため、JavaのMapに似たオブジェクトだと言えます。 Pythonでは、波括弧 {} を使って辞書リテラルを作成します。キーと値はコロン : で結び、各ペアはカンマ , で区切ります。 辞書の作成方法 まずは、基本的な辞書の作成例を見てみましょう。 datedict = { date: 13, month: January, year: 1970 } print(datedict) 実行結果: {date: 13, month: January, year: 197