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

Pythonの辞書から特定のキーだけを抽出する方法

辞書(dict)はPythonで最も広く使われているデータ構造の一つです。データを「キー」と「値」のペアとして保持します。この記事では、既存の辞書から指定したキーに対応する要素だけを取り出して、新しい辞書を作成する方法を2つのアプローチで解説します。

方法1:辞書内包表記を使う

最もシンプルでPythonらしい方法が、辞書内包表記です。in演算子と組み合わせることで、抽出したいキーの集合に含まれるキーだけをループ処理し、新しい辞書を効率的に生成できます。

コード例

dictA = {'Sun': '2 PM', "Tue": '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}

# 元の辞書
print("Given dictionary : ",dictA)

res = {key: dictA[key] for key in dictA.keys()
& {'Fri', 'Sun'}}

# 結果
print("Dictionary with given keys is : ",res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given dictionary : {'Sun': '2 PM', 'Tue': '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}
Dictionary with given keys is : {'Fri': '9 PM', 'Sun': '2 PM'}

ここでは & 演算子によって、元の辞書のキー一覧と抽出対象のキー集合 {'Fri', 'Sun'} の共通部分(積集合)のみが処理対象になります。そのため、存在しないキーを指定してもエラーにはなりません。

方法2:dict()関数を使う

もう一つの方法は、dict()関数にジェネレータ式を渡すやり方です。forループで目的のキーを順に取り出しながら、(キー, 値) のタプルを生成し、それをもとに新しい辞書を作成します。if k in dictA という条件を付けることで、辞書に存在するキーだけを安全に処理できます。

コード例

dictA = {'Sun': '2 PM', "Tue": '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}

# 元の辞書
print("Given dictionary : ",dictA)

res = dict((k, dictA[k]) for k in ['Fri', 'Wed']
if k in dictA)

# 結果
print("Dictionary with given keys is : ",res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given dictionary : {'Sun': '2 PM', 'Tue': '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}
Dictionary with given keys is : {'Fri': '9 PM', 'Wed': '3 PM'}

まとめ

どちらの方法でも、元の辞書を変更せずに特定のキーだけを持つ新しい辞書を作成できます。可読性を重視するなら辞書内包表記、キーをリストとして明示的に管理したい場合はdict()関数を使うのがおすすめです。状況に応じて使い分けるとよいでしょう。

  1. Pythonの正規表現を使って文字列から数値を抽出する方法

    正規表現モジュールを使った抽出方法Pythonで文字列から数値を抽出する場合、標準ライブラリのreモジュール(正規表現モジュール)を使うのが最も高速で効率的な方法です。まずはモジュールをインポートします。>>> import reサンプル文字列の準備ここでは、整数と浮動小数点数が混在した以下のような文字列を例に考えてみましょう。>>> s = my age is 25. I have 55.50 percent marks and 9764135408 is my numberfindall()関数で数値を抽出するfindall()関数は、指定したパターンに

  2. Pythonで辞書をキー順に並べ替える方法【OrderedDictとsorted()の使い方】

    Pythonで辞書(dict)の要素をキーの順序に従って並べ替えたい場面はよくあります。この記事では、標準ライブラリのcollectionsモジュールに含まれるOrderedDictと、組み込み関数sorted()を組み合わせて、辞書をキー順にソートする方法を解説します。 OrderedDictとは Pythonの標準ディストリビューションには、高性能なコンテナデータ型を定義したcollectionsモジュールが含まれています。その中のOrderedDictは、辞書のサブクラスであり、要素が追加された順序を記憶する特徴を持っています。OrderedDictをイテレートすると、キーが最初に追加さ