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

Pythonで2つの辞書のキーの差分を取得する方法【集合演算・forループ】

Pythonでは、2つの辞書の間に共通するキーが含まれることがよくあります。この記事では、2つの辞書に存在するキーの差分(違い)を取得する方法を解説します。

set(集合)を使った方法

まず、2つの辞書に対してset()関数を適用し、それぞれを集合に変換します。その後、2つの集合の差分を計算することで、キーの違いを求められます。片方向だけでなく、「1つ目の辞書から2つ目の辞書を引く」「2つ目の辞書から1つ目の辞書を引く」という両方向で計算することで、どちらかにのみ存在するキーがすべて結果として得られます。

サンプルコード

dictA = {'1': 'Mon', '2': 'Tue', '3': 'Wed'}
print("1つ目の辞書:\n", dictA)
dictB = {'3': 'Wed', '4': 'Thu', '5': 'Fri'}
print("2つ目の辞書:\n", dictB)

res1 = set(dictA) - set(dictB)
res2 = set(dictB) - set(dictA)
print("\n2つの辞書間のキーの差分:")
print(res1, res2)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

1つ目の辞書:
{'1': 'Mon', '2': 'Tue', '3': 'Wed'}
2つ目の辞書:
{'3': 'Wed', '4': 'Thu', '5': 'Fri'}

2つの辞書間のキーの差分:
{'2', '1'} {'4', '5'}

この結果から、辞書dictAには存在するがdictBには存在しないキーは「1」と「2」、逆にdictBには存在するがdictAには存在しないキーは「4」と「5」であることがわかります。なお、共通するキー「3」は差分には含まれません。

in演算子とforループを使った方法

もう一つのアプローチとして、forループで一方の辞書のキーを順番に取り出し、in演算子を使ってもう一方の辞書にそのキーが存在するかどうかを確認する方法があります。

サンプルコード

dictA = {'1': 'Mon', '2': 'Tue', '3': 'Wed'}
print("1つ目の辞書:\n", dictA)
dictB = {'3': 'Wed', '4': 'Thu', '5': 'Fri'}
print("2つ目の辞書:\n", dictB)

print("\n1つ目の辞書にあって2つ目の辞書にないキー:")
for key in dictA.keys():
    if key not in dictB:
        print(key)

実行結果

上記のコードを実行すると、以下のような出力が得られます。

1つ目の辞書:
{'1': 'Mon', '2': 'Tue', '3': 'Wed'}
2つ目の辞書:
{'3': 'Wed', '4': 'Thu', '5': 'Fri'}

1つ目の辞書にあって2つ目の辞書にないキー:
1
2

まとめ

set()による集合演算は簡潔に差分を一括で取得できるのが特徴で、双方向の差分を一度に求めたい場合に便利です。一方、forループとin演算子を使う方法は、条件分岐と組み合わせやすい柔軟性があり、特定の処理を差分キーごとに実行したい場合に向いています。用途に応じて使い分けるとよいでしょう。

  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