Pythonで辞書(dict)を反復処理する4つの基本方法
この記事では、Python 3.x(およびそれ以前のバージョン)における辞書(dict)の反復処理・走査の方法について解説します。
辞書とは、キーと値のペアから構成されるデータ構造です。インデックスには任意のイミュータブル(変更不可能)な型を使用でき、これらは「キー」と呼ばれます。辞書は波括弧 {} の中に定義します。
なお、本記事のサンプルコードでは、意図的に重複したキーを含む辞書を使用しています。Pythonでは辞書のキーは一意である必要があるため、同じキーが複数回定義された場合は、後から定義された値が前の値を上書きします。そのため、実際に保持されるのは「t:o」「r:i」「a:l」「s:p」「o:i」「n:t」の6つのペアとなります。
方法1:辞書を直接反復処理する(キーの取得)
for文で辞書オブジェクトをそのまま指定すると、デフォルトで各キーが順番に取り出されます。
例
dict_inp = {'t':'u','t':'o','r':'i','a':'l','s':'p','o':'i','n':'t'}
# 辞書を反復処理する
for value in dict_inp:
print(value, end='')
出力
trason
方法2:values()を使って値を反復処理する
values() メソッドを使用すると、辞書に格納されているすべての値を取り出すことができます。
例
dict_inp = {'t':'u','t':'o','r':'i','a':'l','s':'p','o':'i','n':'t'}
# 値を反復処理する
for value in dict_inp.values():
print(value, end='')
出力
oilpit
方法3:キーをインデックスとして値にアクセスする
for文で取り出したキーを使って dict[キー] の形式でアクセスすれば、対応する値を個別に取得することも可能です。
例
dict_inp = {'t':'u','t':'o','r':'i','a':'l','s':'p','o':'i','n':'t'}
# キーをインデックスとして値を反復処理する
for value in dict_inp:
print(dict_inp[value], end='')
出力
oilpit
方法4:items()を使ってキーと値の両方を取得する
items() メソッドを使用すると、キーと値のペアを同時に取り出せます。キーと値の両方が必要な場合に最も効率的な方法です。
例
dict_inp = {'t':'u','t':'o','r':'i','a':'l','s':'p','o':'i','n':'t'}
# キーと値のペアを反復処理する
for value,char in dict_inp.items():
print(value,":",char, end=" ")
出力
t : o r : i a : l s : p o : i n : t
まとめ
この記事では、Pythonにおける辞書の反復処理・走査のさまざまな方法について学びました。キーだけが必要なら辞書を直接ループし、値だけなら values()、両方が必要なら items() を使うことで、目的に応じた効率的なデータアクセスが可能になります。それぞれの特性を理解して、適切に使い分けましょう。
-
Pythonで辞書を反復処理する2つの方法をわかりやすく解説
Pythonの辞書(dict)オブジェクトを反復処理する方法は主に2つあります。1つ目は、keys()メソッドでキーのリストを取得し、各キーに対応する値を取り出す方法です。keys()メソッドを使った反復処理>>> D1 = {1:a, 2:b, 3:c} >>> for k in D1.keys(): print (k, D1[k]) 1 a 2 b 3 c keys()メソッドは辞書内のすべてのキーを返します。ループ内でキーを変数kに受け取り、D1[k]のように記述することで、そのキーに関連付けられた値へアクセスできます。items()メソッドを
-
Pythonで特定のディレクトリ内のファイルを反復処理する方法をわかりやすく解説
os.listdir()でディレクトリの中身を一括取得するPythonで特定のディレクトリ内のファイルやフォルダを反復処理したい場合、最も基本的な方法が標準ライブラリのos.listdir()を使うことです。os.listdir(my_path)を実行すると、指定したパス(my_path)に含まれるファイルとディレクトリの一覧がリスト形式で返されます。以下は、カレントディレクトリ(.)の中身を取得する例です。>>> import os>>> os.listdir(.)[DLLs, Doc, etc, include, Lib, libs, LICENSE.t