【Python】dictをfilterする

Python

Pythonでdictをfilterするには次のようにします。

output_dict = dict(filter(lambda item: 条件式, input_dict.items()))

例えばdictの中から値が偶数であるものだけを取り出すには

input_dict = {"hoge": 1, "piyo": 2, "foo": 3, "bar": 4}
output_dict = dict(filter(lambda item: item[1] % 2 == 0, input_dict.items()))
print(output_dict) # {'piyo': 2, 'bar': 4}

のようにします。

仕組み

filterは第1引数に与えられた関数を第2引数で与えられたシーケンス1つ1つに適応し、Trueになったシーケンスのみを返す関数です。

上の例では第1引数の関数としてlambda式が与えられています。lambda式でdictのitem(keyとvalueのタプル)を受け取り、item[1]のようにしてvalueにアクセスしています。

もしdictのkeyでフィルタリングしたい場合はitem[0]のようにすればできます。例えば特定のkeyのみを含むdictを取り出したい場合は下のようにします。

input_dict = {"hoge": 1, "piyo": 2, "foo": 3, "bar": 4}
keys = set(["hoge", "piyo"])
output_dict = dict(filter(lambda item: item[0] in keys, input_dict.items()))
print(output_dict) #{'hoge': 1, 'piyo': 2}

コメント

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