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

Pythonで選択リストの値に基づいて辞書のキーをフィルタリングする方法

Pythonで辞書(dict)を扱っていると、特定の条件に基づいて不要なキーを除外したり、必要なキーだけを抽出したい場面があります。本記事では、選択リスト(キーの候補リスト)の値をもとに、Pythonの辞書からキーをフィルタリングする方法を、2つのアプローチで解説します。

方法1:for文とin演算子を使う

まず、フィルタリングしたいキーをリストに格納します。続いて、リストの各要素を順に取り出し、その要素が対象の辞書に存在するかどうかをin演算子で確認します。存在が確認できたキーに対応する値だけを、リスト内包表記を使って新しいリストとしてまとめます。

サンプルコード

dictA= {'Mon':'Phy','Tue':'chem','Wed':'Math','Thu':'Bio'}
key_list = ['Tue','Thu']

print("Given Dictionary:\n",dictA)
print("Keys for filter:\n",key_list)
res = [dictA[i] for i in key_list if i in dictA]

print("Dictionary with filtered keys:\n",res)

実行結果

上記のコードを実行すると、以下の出力が得られます。

Given Dictionary:
    {'Mon': 'Phy', 'Tue': 'chem', 'Wed': 'Math', 'Thu': 'Bio'}
Keys for filter:
    ['Tue', 'Thu']
Dictionary with filtered keys:
    ['chem', 'Bio']

リストではなく、フィルタリング済みの辞書そのものが必要な場合は、辞書内包表記を使うと便利です。

res_dict = {i: dictA[i] for i in key_list if i in dictA}
# 結果: {'Tue': 'chem', 'Thu': 'Bio'}

方法2:intersection(積集合)を使う

この方法では、set()関数を使ってキーリストと辞書の共通要素(積集合)を求めます。set関数によって重複のない要素が得られるため、それをlist()でリストに変換してから、対応する値を順に取り出します。

サンプルコード

dictA= {'Mon':'Phy','Tue':'chem','Wed':'Math','Thu':'Bio'}
key_list = ['Tue','Thu']

print("Given Dictionary:\n",dictA)
print("Keys for filter:\n",key_list)

temp = list(set(key_list).intersection(dictA))

res = [dictA[i] for i in temp]

print("Dictionary with filtered keys:\n",res)

実行結果

上記のコードを実行すると、以下の出力が得られます。

Given Dictionary:
    {'Mon': 'Phy', 'Tue': 'chem', 'Wed': 'Math', 'Thu': 'Bio'}
Keys for filter:
    ['Tue', 'Thu']
Dictionary with filtered keys:
    ['chem', 'Bio']

どちらの方法でも同じ結果が得られます。シンプルに処理したい場合はfor文とin演算子の組み合わせが読みやすく、キーの数が多い場合や集合演算を活用したい場合にはintersectionを使った方法が有効です。用途に応じて使い分けるとよいでしょう。

  1. Pythonの辞書(ディクショナリ)からすべての値をリストとして取得する方法

    Pythonの辞書に格納されたすべての値をリスト形式で取得したい場合、最もシンプルな方法は dict.values() メソッドを使うことです。このメソッドは辞書内のすべての値を返すため、list() 関数で囲むことで簡単にリストへ変換できます。values() メソッドを使った基本的な例my_dict = {name: TutorialsPoint, time: 15 years, location: India} value_list = list(my_dict.values()) print(value_list)出力結果上記のコードを実行すると、次のような出力が得られます。[Tuto

  2. Pythonの辞書からすべてのキーをリストとして取得する方法

    Pythonの辞書(dict)からすべてのキーをリストとして取得したい場合、最もシンプルな方法は dict.keys() メソッドを使うことです。このメソッドは辞書内のすべてのキーを含むビューオブジェクトを返すため、list() で囲むことで簡単にリストへ変換できます。keys()メソッドを使う例my_dict = {name: TutorialsPoint, time: 15 years, location: India} key_list = list(my_dict.keys()) print(key_list)出力実行すると、次のような結果が得られます。[name, time, loc