Python

Pythonの辞書(dict)のforループ処理と注意点

辞書(dict)のforループ処理

Pythonで扱える辞書は、dict オブジェクトを使用しています。
リストと同じようにイテレーティブな処理が可能で、for 文で要素を一つずつ取り出し、
任意の処理を行うことができます。

 

for 文でイテレーティブ処理を行う場合、辞書 dict のメソッド keys(), values(), items() を使用します。

  • keys():各要素のキー key に対して for ループ処理を行う
  • values():各要素の値 value に対して for ループ処理を行う
  • items():各要素のキー key と値 value に対して for ループ処理を行う

 

 

keys():各要素のキー key に対して for ループ処理を行う

Pythonでは、辞書オブジェクトをそのまま for 文でループさせてもキー key が取得できますが、
明示的に keys() メソッドを使って記述するのが一般的です。

SANACHAN
SANACHAN
keys()で返ってくる dict_keys オブジェクトは、集合演算が可能であることを覚えておきましょう。

 

 

value():各要素の値 value に対して for ループ処理を行う

辞書 dict の各要素の値 value に対して for ループ処理を行う場合は、
dict オブジェクトの values() メソッドを使います。

SANACHAN
SANACHAN
values()で返ってくる dict_values オブジェクトは、集合演算できません。キー key と違い、値 value は重複するためです。
また、リストで扱いたい場合は、list() を使ってリスト化できます。

 

 

items():各要素のキー key と値 value に対して for ループ処理を行う

各要素のキー key と値 value の両方に対して for ループ処理を行いたい場合は、
items() メソッドを使います。

 

(key, value) のタプル tuple として受け取ることもできます。

SANACHAN
SANACHAN
items()メソッドは dict_items オブジェクトを返します。list() でリスト化すると、各要素は (key, value) のタプル tuple になります。

 

 

辞書(dict)を for ループ処理するときの注意点

Python 3.5以前では、辞書 dict をイテレートすると任意の順序でキーが返されます。つまり、要素を挿入した順序とは無関係な順序でしかキーを取り出せないということです。

SANACHAN
SANACHAN
辞書を作成した時は cat、dog の順でしたが、出力ではキーの逆順が逆!

 

ポイント

辞書(dict)を for 文でループ処理する場合、挿入順序に依存してはいけない。
Python 3.5 以前の場合は、特に注意が必要です。

リストと異なり、Python の辞書(他言語ではハッシュテーブル等)dict
格納順序を保証していないことを注意しながら扱いましょう。

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-,