
158
第 4 章 シーケンスとコンテナ型
パラメタ
seq
−
辞書のキーを返すイテラブルオブジェクトを指定します。
value
−
要素の値を指定します。省略時は
None
となります。
>>> dict.fromkeys(['spam', 'ham', 'egg'], 0)
{'spam': 0, 'ham': 0, 'egg': 0}
4.8.6
要素の列挙とビューオブジェクト
辞書はイテラブルオブジェクトで、辞書が返すイテレータは、要素のキーを列挙します。
>>> d = {'spam':1, 'ham':2, 'egg':3}
>>> for key in d:
... print(key)
ham
egg
spam
リストなどのシーケンスオブジェクトのイテレータは、常に先頭の要素から決まった順番で要素
を返しますが、辞書のイテレータが返すキーの順番は一定ではなく、さまざまな理由から変化しま
す。キーの出現順が一定であると想定してしまうと、思わぬところで障害の原因になりますので、
キーがどんな順番で並んでいても、問題の無いように注意する必要があります。
また、イテレータによるキーの列挙は、列挙中に辞書の要素数が変更されると無効になります。
ループ中に要素の追加などを行うと、次のようにエラーが発生します。
>>> d = {'spam':1, 'ham':2, 'egg':3}
>>> for key in d:
... d['bacon'] = 4 #
イテレータでキーを列挙中に要素を追加
... print(key) ...