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 が結果として返されています。両方の辞書に存在する 1 と 3 は自動的に除外されます。
symmetric_difference() メソッドを使う方法
^ 演算子の代わりに、symmetric_difference() メソッドを使用することもできます。処理内容は同じですが、コードの意図がより明確になります。
>>> set(D1.keys()).symmetric_difference(set(D2.keys()))
{2, 5}
さらに、Python 3以降では dict.keys() がセットライクなビューを返すため、わざわざ set() で変換せずに D1.keys() ^ D2.keys() と直接記述することも可能です。
-
Pythonで2つのファイルの差分(diff)を検出する方法
Pythonの標準ライブラリには、文字列やファイル間の差分を検出するための専用モジュール difflib が用意されています。このモジュールの unified_diff 関数を使えば、Unixのdiffコマンドのような「統一形式(unified format)」の差分を、追加のインストールなしに簡単に取得できます。サンプルファイルの準備例として、次のような内容を持つ2つのファイル file1 と file2 を用意します。file1:HelloPeopleoftheworldfile2:HelloPeoplefromIndia差分を検出するコードこれらのファイルの差分を取得するには、以下のよう
-
Pythonで部分文字列が文字列に含まれているか確認する方法(in演算子とfindメソッド)
Pythonでは、ある文字列が別の文字列の部分文字列(サブストリング)として含まれているかどうかを簡単に確認できます。最も基本的な方法は、in 演算子を使うことです。in 演算子を使った判定方法in 演算子は、左辺の文字列が右辺の文字列に含まれている場合に True を、含まれていない場合に False を返します。以下はその使用例です。print(ello in hello world)実行結果:Trueこのように、ello は hello world の中に含まれているため、True が出力されます。find() メソッドで位置(インデックス)を取得する部分文字列が含まれているかどうかに加