Python | 2つの辞書の差分を取得する方法

Python 辞書,Python

Python | 2つの辞書の差分を取得する方法

Pythonで2つの辞書の差分データを取得する方法とサンプルコードを紹介しています。

確認環境

Windows11 ローカル
Python python-3.11.1

1つ目の辞書にあって2つ目の辞書には無いキー名を取得する

Pythonでset()関数とkey()メソッドでキー名のみのデータにしたものを-演算子を利用して辞書データの差分を取得する事ができます。
1つ目の辞書にあって2つ目の辞書には無いキー名のとデータを取得する場合は-演算子で差し引くことで差分のデータを辞書データとして取得できます。

data1 = {'apple': 100, 'banana': 50, 'orange': 120}
data2 = {'apple': 80, 'banana': 50, 'pine': 100}

difference = set(data1.keys()) - set(data2.keys())

print(difference)
# {'orange'}

双方の辞書に無いキー名を取得する

双方の辞書に無いキー名を取得する場合は、単純に結果を結合することで取得する事が可能です。
|演算子を使ってそれぞれで得た差分データの結果を結合します。

data1 = {'apple': 100, 'banana': 50, 'orange': 120}
data2 = {'apple': 80, 'banana': 50, 'pine': 100}

difference = set(data1.keys()) - set(data2.keys()) | set(data2.keys()) - set(data1.keys())

print(difference)
# {'orange', 'pine'}

キーと値のセットで一致しないものを差分データとして取得する

キーと値のセットで一致しないものを差分データとして取得する場合はitems()メソッドを使って取得する事もできます。

data1 = {'apple': 100, 'banana': 50, 'orange': 120}
data2 = {'apple': 120, 'banana': 80, 'orange': 120}

difference = data1.items() - data2.items()

print(difference)
# {('banana', 50), ('apple', 100)}

2つ目の値が欲しい場合は、指定を逆にします。

data1 = {'apple': 100, 'banana': 50, 'orange': 120}
data2 = {'apple': 120, 'banana': 80, 'orange': 120}

difference = data2.items() - data1.items()

print(difference)
# {('banana', 80), ('apple', 120)}

Python 辞書,Python

Posted by Yousuke.U