Pythonで2つの辞書の違いを取得するにはどうすればいいですか? 質問する

Pythonで2つの辞書の違いを取得するにはどうすればいいですか? 質問する

辞書が 2 つあり、その 2 つの違いを見つけてキーと値の両方を取得する必要があります。

検索して、datadiff や dictdiff-master などのアドオン/パッケージを見つけましたが、Python 2.7 でインポートしようとすると、そのようなモジュールは定義されていないというメッセージが表示されます。

ここではセットを使用しました:

first_dict = {}
second_dict = {}
 
value = set(second_dict) - set(first_dict)
print value

私の出力は次のとおりです:

>>> set(['SCD-3547', 'SCD-3456'])

キーのみを取得していますが、値も取得する必要があります。

ベストアンサー1

それには集合の対称差演算を使う方が良いと思うドキュメントへのリンクはこちら

>>> dict1 = {1:'donkey', 2:'chicken', 3:'dog'}
>>> dict2 = {1:'donkey', 2:'chimpansee', 4:'chicken'}
>>> set1 = set(dict1.items())
>>> set2 = set(dict2.items())
>>> set1 ^ set2
{(2, 'chimpansee'), (4, 'chicken'), (2, 'chicken'), (3, 'dog')}

対称的な理由は次のとおりです。

>>> set2 ^ set1
{(2, 'chimpansee'), (4, 'chicken'), (2, 'chicken'), (3, 'dog')}

これは、差演算子

>>> set1 - set2
{(2, 'chicken'), (3, 'dog')}
>>> set2 - set1
{(2, 'chimpansee'), (4, 'chicken')}

ただし、情報が失われる可能性があるため、結果セットを辞書に変換することはお勧めできません。

>>> dict(set1 ^ set2)
{2: 'chicken', 3: 'dog', 4: 'chicken'}

おすすめ記事