Pythonでfilterboxを用いて属性を照合してPythonオブジェクトを検索する

スポンサーリンク

Pythonでfilterboxを用いて属性を照合してPythonオブジェクトを検索してみます。

今回はfilterboxを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「Python 3.9.13」を使用しています。(Windows10)

■仮想環境に入る

filterboxを用いて属性を照合してPythonオブジェクトを検索する前に、今回仮想環境下でfilterboxをインストールしていますので、まずはWindows10のコマンドプロンプトを起動します。

C:\Users\user_>cd filter

起動後、上記のコマンドを入力し、Enterキーを押します。「cd」コマンドで「filter」ディレクトリ内に移動します。

C:\Users\user_\filter>.venv\Scripts\activate.bat

移動後、上記のコマンドを入力し、Enterキーを押します。仮想環境のディレクトリ内に作成された activateスクリプトを実行し、仮想環境に入ります。

(.venv) C:\Users\user_\filter>

Enterキーを押すと、「(.venv)」と表示されます。これで仮想環境に入ることができました。

■filterboxを用いて属性を照合してPythonオブジェクトを検索する

入った後に、filterboxを用いて属性を照合してPythonオブジェクトを検索するスクリプトを書いていきます。

■コード

from filterbox import FilterBox

test = [
    {'1組':'田中','数学':10,'国語':90},
    {'1組':'吉田','数学':30,'国語':30},
    {'1組':'佐々木','数学':75,'国語':30},
    {'1組':'盛岡','数学':90,'国語':10},
]

def test_f(obj):
    return obj['数学'] > 50

fb = FilterBox(test,on=[test_f,'国語'])

print(fb.find({test_f: True, '国語':30}))

importでfilterboxでFilterBoxを呼び出します。その後、testという辞書を定義します。辞書内には”キー”と”値”のセットを格納します。

格納後、def文を用いてtest_fという関数を定義し、この関数が呼び出された時に実行される処理としては、今回はreturnとして、辞書内からキーが「数学」で値が50”よりも大きい(比較演算子,>)”を返すというものです。

その後、fbという変数を定義し、その中でFilterBox()を用います。括弧内には第1の引数,パラメータとして、testという辞書を渡します。次に第2の引数,パラメータとして、見つけたい属性、もしくはキーを渡します。これでFilterBoxが作成されます。

作成後、fb.find()を用います。括弧内には、「test_f: True」としtest_fという関数でオブジェクト(もしくはキー)を検索するように指定し、さらに「’国語’:30」で見つけたい属性、もしくはキーと値のセットを指定します。今回は、辞書内のキーが「数学」で値が50”よりも大きく、「国語」の値が「30」というのが検索対象となります。

これで属性を照合してPythonオブジェクトを検索し検索結果をprint()で出力させることができます。

このスクリプトを「filter」ディレクトリ内に、今回は「fi_b_test.py」という名前で保存します。

■実行・検証

保存後、コマンドプロンプト上で仮想環境に入った状態でスクリプトファイルを実行してみます。

(.venv) C:\Users\user_\filter>python fi_b_test.py

実行してみると、filterboxを用いて属性を照合してPythonオブジェクトを検索し、検索結果をprint()で出力させることができました。

コメント

タイトルとURLをコピーしました