辞書はリストと同じようにイテラブルなので、for文で要素を一つずつ取り出すことができます。しかし、辞書は要素がキーとペアに分かれているため、多少勝手が違います。
そのため、ここではfor文で、
- キーを取り出す方法
- 値を取り出す方法
- 両方取り出す方法
を解説します。
なおfor文については、「Pythonのfor文による繰り返し処理(forループ)の基本」で解説しているので、先にご確認ください。
1. for文でキーを取り出す|keys()メソッド
for文で辞書のキーを取り出すには、keys()メソッドを実行した辞書でループを回します。
dict = {'東京':900, '横浜':370, '大阪':250, '名古屋':230, '福岡':150}
for k in dict.keys():
print(k)
keys()メソッドは、辞書のキーからdict_keys型のイテラブル(要素を順番に取り出すことができるオブジェクト)を作成します。
print(dict.keys())
print(type(dict.keys()))
keys()メソッドの実行結果を見ると、dict_keys型イテラブルの中にキーが格納されていることが分かりますね。
これをfor文でループしているので、キーを取り出すことができるのですね。
また、dict_keys型のオブジェクトはセットと同じような集合演算も可能です(参考:「Pythonのset(集合)の基礎知識と基本操作」)。
さて、実は、普通にkeys()メソッドを使わなくても、辞書をそのままforループで回すとキーのみを取り出します。
for k in dict:
print(k)
ただしkeys()メソッドは、集合演算が可能である点などで有用なので覚えておきましょう。
2. for文で値を取り出す|values()メソッド
for文で辞書の値を取り出すには、values()メソッドを実行した辞書でforループを回します。
for v in dict.values():
print(v)
values()メソッドは、辞書の値からdict_values型のイテラブルを作成します。
print(dict.values())
print(type(dict.values()))
これをforループで回しているため、値のみを取り出すことができるのです。
なお、dict_values型のオブジェクトでは集合演算はできません。辞書の値は、同一のものが複数存在する可能性があるため、そもそも集合演算が可能なデータではないためです。
3. for文でキーと値を取り出す|items()メソッド
for文で辞書のキーと値の両方を取り出すには、items()メソッドを使います。
一度に取り出す要素が2つになるので、以下のコードのように変数(k, v)を2つカンマ区切りで書きます。
for k, v in dict.items():
print(k, v)
変数を1つ(i)にした場合は、キーと値がペアになったタプル型で出力されます。
for i in dict.items():
print(i)
なお、items()メソッドは、以下のように、キーと値をタプル型で保持するdict_items型イテラブルを作ります。
print(dict.items())
print(type(dict.items()))
なおdict_items型オブジェクトでも集合演算が可能です。
4. まとめ
辞書の要素をfor文で取り出す際は、
- key()メソッド:キーを取り出す。
- values()メソッド:値を取り出す。
- items()メソッド:両方を取り出す。
という点を抑えておきましょう。
また、それぞれのメソッドで作成するオブジェクトはlist()関数でリスト化することができます。それについては「Pythonの辞書(dict)のキー・値の存在確認と取得方法」で触れているので、ご確認ください。
コメント