gladevise Logo
HomeAboutContact

【Python】dictをfilterする


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}

Recent Posts

Rust製の爆速端末Alacrittyのインストールと設定方法

Rust製のGPUで高速レンダリングするターミナルエミュレータAlacrittyのインストール方法、tmux、NeoVimでのTrue Color、カラースキーム、Font、デフォルトの端末の設定などの紹介をします。

react-modalを使ってModalコンポーネントを作る

react-modalを使ってModalコンポーネントを作る方法を解説します。モーダルの外側をクリックして閉じる、アニメーションを付ける等の基本的な機能から、CSS-in-JS(Emotion)を使ってタイリングの方法を説明します。

Emotionを使ってGatsbyでtailwindを使う方法

Gatsby & Emotion & tailwindの環境構築、スタイリング方法についてまとめました。twin.macroを使えば、classNameだけでなく、Styled Componentsやcss propでスタイリングできます。

GatsbyのLinter/Formatter, CSS-in-JS環境構築

Gatsbyのインストール方法、プロジェクトの作り方、Linter(ESLint, stylelint)/Formatter(prettier)、CSS-in-JS(styled-components, Emotion)、tailwindの設定方法を説明します。

Ubuntu19.10から20.04へのアップグレード