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

2つのPython辞書に含まれるキーの違いを見つける方法

セット型を使った解決方法

Pythonでは、セット(set)型を使用することで、2つの辞書のキーの違いを簡単に見つけることができます。

セットとは、重複のない一意かつ不変(イミュータブル)なオブジェクトからなる順序なしコレクションです。数学の集合論で定義された集合演算(和集合・積集合・差集合・対称差など)を実行するために利用されます。

対称差演算とは

2つのセットに対して対称差(symmetric difference)演算を行うと、「どちらか片方にだけ存在し、両方には存在しない」要素が得られます。つまり、共通する要素を除外した結果が返されるのです。

実行例:^ 演算子を使う方法

2つの辞書オブジェクトのキーからそれぞれセットを作成し、^ 演算子を使って対称差を求めます。

>>> D1={1:100, 2:200, 3:300}
>>> D2={1:1000, 3:300, 5:500}
>>> set(D1.keys())^set(D2.keys())
{2, 5}

この例では、D1にのみ含まれるキー 2 と、D2にのみ含まれるキー 5 が結果として返されています。両方の辞書に存在する 13 は自動的に除外されます。

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

^ 演算子の代わりに、symmetric_difference() メソッドを使用することもできます。処理内容は同じですが、コードの意図がより明確になります。

>>> set(D1.keys()).symmetric_difference(set(D2.keys()))
{2, 5}

さらに、Python 3以降では dict.keys() がセットライクなビューを返すため、わざわざ set() で変換せずに D1.keys() ^ D2.keys() と直接記述することも可能です。

  1. Pythonで2つのファイルの差分(diff)を検出する方法

    Pythonの標準ライブラリには、文字列やファイル間の差分を検出するための専用モジュール difflib が用意されています。このモジュールの unified_diff 関数を使えば、Unixのdiffコマンドのような「統一形式(unified format)」の差分を、追加のインストールなしに簡単に取得できます。サンプルファイルの準備例として、次のような内容を持つ2つのファイル file1 と file2 を用意します。file1:HelloPeopleoftheworldfile2:HelloPeoplefromIndia差分を検出するコードこれらのファイルの差分を取得するには、以下のよう

  2. Pythonで部分文字列が文字列に含まれているか確認する方法(in演算子とfindメソッド)

    Pythonでは、ある文字列が別の文字列の部分文字列(サブストリング)として含まれているかどうかを簡単に確認できます。最も基本的な方法は、in 演算子を使うことです。in 演算子を使った判定方法in 演算子は、左辺の文字列が右辺の文字列に含まれている場合に True を、含まれていない場合に False を返します。以下はその使用例です。print(ello in hello world)実行結果:Trueこのように、ello は hello world の中に含まれているため、True が出力されます。find() メソッドで位置(インデックス)を取得する部分文字列が含まれているかどうかに加