Pythonのdict
において、以下を実現する方法についてまとめます。
- 属性でのアクセス
例
d.a = 1
- 挿入順の保持
実現するオブジェクト
属性でのアクセスのみ
attrdict.AttrDict
で実現できます。
インストール方法
$ pip install attrdict
属性でのアクセスと挿入順の保持
collections.OrderedDict
で実現できます。
初期化の際の注意
以下のように記述すると順番が保持されなくなります。
良くない例
# coding=utf-8
import collections
# メイン処理
if __name__ == '__main__':
# 引数として要素を与えて初期化を行うと順番が保持されない
d = collections.OrderedDict(a=1, b=2, c=3, d=4)
# dのkeyとvalueを順番に表示
for k, v in d.items():
print('{} : {}'.format(k, v))
そのため、初期化を行いたい場合には以下のようにタプルにする必要があります。
良い例
# coding=utf-8
import collections
# メイン処理
if __name__ == '__main__':
# タプルとして要素を与えて初期化を行うと順番が保持される
d = collections.OrderedDict((('a', 1), ('b', 2), ('c', 3), ('d', 4)))
# dのkeyとvalueを順番に表示
for k, v in d.items():
print('{} : {}'.format(k, v))