Python で辞書を列挙する

Manav Narula 2023年10月10日
Python で辞書を列挙する

Python の enumerate() 関数は列挙型のオブジェクトを返し、リストや他のタイプのコレクションを反復処理するためのカウンタ変数を追加します。これにより、このようなオブジェクトのループ処理がより簡単になります。

関数 list() に渡すと、列挙型オブジェクトの内容を見ることができます。例えば、以下のようになります。

l = ["a", "b", "c"]
print(list(enumerate(l)))

出力:

[(0, 'a'), (1, 'b'), (2, 'c')]

enumerate() 関数を辞書でも利用することができます。

以下の例は、基本的な例を示しています。

d1 = {"a": 15, "b": 18, "c": 20}

for i, j in enumerate(d1):
    print(i, j)

出力:

0 a
1 b
2 c

関数 enumerate() に辞書を直接渡し、カウンタ変数を辞書のキーに代入するだけで、値には代入しないことに注目してください。そのため、このオブジェクトを繰り返し処理する際には、カウンタ変数と辞書のキーにしかアクセスできませんでした。

キーと値の両方を列挙するには、辞書の items() メソッドを使用することができます。メソッドは、キーと値のペアをタプルとして持つオブジェクトを返します。以下の例は、items() メソッドを enumerate() 関数と組み合わせて使用し、キーと対応する値の両方にアクセスする方法を示しています。

d1 = {"a": 15, "b": 18, "c": 20}

for i, (j, k) in enumerate(d1.items()):
    print(i, j, k)

出力:

0 a 15
1 b 18
2 c 20

キーを含まない辞書要素のみを取得したい場合は、values() 関数を使用します。これは辞書の値を含むリストを返します。

以下のコードはその方法を示しています。

d1 = {"a": 15, "b": 18, "c": 20}

for i, j in enumerate(d1.values()):
    print(i, j)

出力:

0 15
1 18
2 20
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Dictionary