dict
)オブジェクトと順序付き辞書型( OrderedDict
)オブジェクトとをどう使い分ければよいのでしょうか? dict
は対応付けに向くように設計されている。 OrderedDict
は 並べ替え操作に向くように設計されている。 OrderedDict
は高頻度の並べ替え操作を dict
よりも上手く扱うことができるようになっています。 OrderedDict
は直近のアクセスの追跡に向いている。 popitem()
メソッドは実装方法が違っています。機能としては辞書オブジェクトの要素を削除して、その要素を返します。辞書型( dict
)では取り出す要素を指定することはできませんが、順序付き辞書型( OrderedDict
)では、FIFO(First-In First-Out: 先入れ先出し) あるいは LIFO(Last-In First-Out: 後入れ先出し)で要素の方向を指定をするオプション last=<True|False>
を取ることができます。from collections import OrderedDict
d = {'b': 1, 'a': 2, 'c':3}
k,v=d.popitem()
print(type(d))
print(k,v)
print(d.items())
od = OrderedDict([('b', 1), ('a', 2), ('c',3)])
k,v=od.popitem(last=False)
print(type(od))
print(k,v)
print(od.items())
od = OrderedDict([('b', 1), ('a', 2), ('c',3)])
k,v=od.popitem(last=True)
print(type(od))
print(k,v)
print(od.items())
$ python 0222_ordereddict.py
<class 'dict'>
c 3
dict_items([('b', 1), ('a', 2)])
<class 'collections.OrderedDict'>
b 1
odict_items([('a', 2), ('c', 3)])
<class 'collections.OrderedDict'>
c 3
odict_items([('b', 1), ('a', 2)])