Python

【Python】辞書型の色々なループ

Pythonのイテラブルな型にはリストやタプル、集合、文字列などがあるが、辞書もイテラブルであり、ループ処理が可能である。

辞書は他の型と異なり、キーと値がセットになっているため、ループの方法が何種類かある。

3種類のループ方法がある。

  • キーをループ
  • 値をループ
  • キーと値をループ

辞書のキーをループ

辞書のキーをループさせる方法①

dict_a = {"key1": 1, "key2": 2, "key3": 3}

for v in dict_a:
    print(f"{v=}")
>>
v='key1'
v='key2'
v='key3'

単純に辞書をループさせると、キーがループする。

辞書のキーをループさせる方法②

dict_a = {"key1": 1, "key2": 2, "key3": 3}

for key in dict_a.keys():
    print(f"{key=}")
>>
key='key1'
key='key2'
key='key3'

keys()でキーをループできる。つけなくても良いが、keys()があった方が、キーをループさせていることがハッキリと分かるので親切かもしれない。

辞書の値をループ

dict_a = {"key1": 1, "key2": 2, "key3": 3}

for value in dict_a.values():
    print(f"{value=}")
>>
value=1
value=2
value=3

values()で辞書の値を取り出せる。

キーが必要なく、値だけが必要な場合に使うと分かりやすい。

辞書のキーと値をループ

dict_a = {"key1": 1, "key2": 2, "key3": 3}

for key, value in dict_a.items():
    print(f"{key=}, {value=}")
>>
key='key1', value=1
key='key2', value=2
key='key3', value=3

items()でキーと値のタプルを取得できる。

あまり使う機会はないが、タプルのまま取得すると以下のようになる。

dict_a = {"key1": 1, "key2": 2, "key3": 3}

for t in dict_a.items():
    print(f"{t=}, {t[0]=}, {t=}")
>>
t=('key1', 1), t[0]='key1', t=1
t=('key2', 2), t[0]='key2', t=2
t=('key3', 3), t[0]='key3', t=3

辞書型を使っている時点で、キーと値をセットで扱うことが多いと思われるため、items()を使う機会が多いと思う。

キーさえ取り出せれば、値も取得できるが、値も必要な場合、値も最初からループさせた方が処理が見やすくなりやすい。