Python標準のDict型は、追加した順番は保持してくれません。。。処理する都合で、Dict型に追加した順番通りにしたいこともしばしば、、、
そんな時、便利なのが「OrderedDict」です!
OrderedDictって?
標準ライブラリである「OrderedDict」を使用してDict型のオブジェクトを作ると、追加した順番通りにキーを取り出すことができちゃいます!
Dict型でデータを作りながら、Tuple型で順番を別に管理する、、、なんてことをしなくてOKになります!
使い方
OrderedDictの使い方は、以下の通りです!
from collections import OrderedDict data = OrderedDict(キー=値, 必要があればカンマ区切りで追加)
試しに、簡単にやってみますー!
from collections import OrderedDict data = OrderedDict(tx=0) print data # OrderedDict([('tx', 0)])
Dict型のように、同じように追記できます!しっかり追加した順番を覚えてくれていますね(゚∀゚)
from collections import OrderedDict data = OrderedDict(tx=0) data["ty"]=1 print data # OrderedDict([('tx', 0), ('ty', 1)])
初期化の注意!
OrderedDictは「追加された」順番を覚えてくれますが、作ったときの順番は覚えてくれません。上記のコードを初期化でやってしまうと、順番がめちゃめちゃになってしまいます(;´∀`)
from collections import OrderedDict data = OrderedDict(tx=0, ty=1, tz=2) print data # OrderedDict([('tz', 2), ('tx', 0), ('ty', 1)])
こういった場合は、以下のようにするといいと思います!(`・ω・´)ゞ
from collections import OrderedDict data = OrderedDict()# インスタンスを作るだけ data["tx"]=0# 中身は追加していく data["ty"]=1 data["tz"]=2 print data # OrderedDict([('tx', 0), ('ty', 1), ('tz', 2)])
Tuple型から変換してしまう手もあります!
from collections import OrderedDict temp = (("tx",0), ("ty",1), ("tz",2)) data = OrderedDict(temp)# tuple型から変換する print data # OrderedDict([('tx', 0), ('ty', 1), ('tz', 2)])
今週は3連休ですね!みなさんはお出かけされますか?(*´ω`*)b