Pythonの辞書(dict)のforループで要素を取り出す方法

辞書はリストと同じようにイテラブルなので、for文で要素を一つずつ取り出すことができます。しかし、辞書は要素がキーとペアに分かれているため、多少勝手が違います。

そのため、ここではfor文で、

  • キーを取り出す方法
  • 値を取り出す方法
  • 両方取り出す方法

を解説します。

なおfor文については、「Pythonのfor文による繰り返し処理(forループ)の基本」で解説しているので、先にご確認ください。

目次

1. for文でキーを取り出す|keys()メソッド

for文で辞書のキーを取り出すには、keys()メソッドを実行した辞書でループを回します。

In [1]:
dict = {'東京':900, '横浜':370, '大阪':250, '名古屋':230, '福岡':150}

for k in dict.keys():
    print(k)
東京
横浜
大阪
名古屋
福岡

keys()メソッドは、辞書のキーからdict_keys型のイテラブル(要素を順番に取り出すことができるオブジェクト)を作成します。

In [2]:
print(dict.keys())
print(type(dict.keys()))
dict_keys(['東京', '横浜', '大阪', '名古屋', '福岡'])
<class 'dict_keys'>

keys()メソッドの実行結果を見ると、dict_keys型イテラブルの中にキーが格納されていることが分かりますね。

これをfor文でループしているので、キーを取り出すことができるのですね。

また、dict_keys型のオブジェクトはセットと同じような集合演算も可能です(参考:「Pythonのset(集合)の基礎知識と基本操作」)。

さて、実は、普通にkeys()メソッドを使わなくても、辞書をそのままforループで回すとキーのみを取り出します。

In [3]:
for k in dict:
    print(k)
東京
横浜
大阪
名古屋
福岡

ただしkeys()メソッドは、集合演算が可能である点などで有用なので覚えておきましょう。

2. for文で値を取り出す|values()メソッド

for文で辞書の値を取り出すには、values()メソッドを実行した辞書でforループを回します。

In [3]:
for v in dict.values():
    print(v)
900
370
250
230
150

values()メソッドは、辞書の値からdict_values型のイテラブルを作成します。

In [4]:
print(dict.values())
print(type(dict.values()))
dict_values([900, 370, 250, 230, 150])
<class 'dict_values'>

これをforループで回しているため、値のみを取り出すことができるのです。

なお、dict_values型のオブジェクトでは集合演算はできません。辞書の値は、同一のものが複数存在する可能性があるため、そもそも集合演算が可能なデータではないためです。

3. for文でキーと値を取り出す|items()メソッド

for文で辞書のキーと値の両方を取り出すには、items()メソッドを使います。

一度に取り出す要素が2つになるので、以下のコードのように変数(k, v)を2つカンマ区切りで書きます。

In [4]:
for k, v in dict.items():
    print(k, v)
東京 900
横浜 370
大阪 250
名古屋 230
福岡 150

変数を1つ(i)にした場合は、キーと値がペアになったタプル型で出力されます。

In [5]:
for i in dict.items():
    print(i)
('東京', 900)
('横浜', 370)
('大阪', 250)
('名古屋', 230)
('福岡', 150)

なお、items()メソッドは、以下のように、キーと値をタプル型で保持するdict_items型イテラブルを作ります。

In [6]:
print(dict.items())
print(type(dict.items()))
dict_items([('東京', 900), ('横浜', 370), ('大阪', 250), ('名古屋', 230), ('福岡', 150)])
<class 'dict_items'>

なおdict_items型オブジェクトでも集合演算が可能です。

4. まとめ

辞書の要素をfor文で取り出す際は、

  • key()メソッド:キーを取り出す。
  • values()メソッド:値を取り出す。
  • items()メソッド:両方を取り出す。

という点を抑えておきましょう。

また、それぞれのメソッドで作成するオブジェクトはlist()関数でリスト化することができます。それについては「Pythonの辞書(dict)のキー・値の存在確認と取得方法」で触れているので、ご確認ください。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる