Pythonで通常辞書型の変数を作成するには「dict」を利用しますが、dictは挿入された順序を保証しません。
辞書(dict)型で挿入した順序を保持したい場合には「OrderedDict」を使うようにします。
挿入順序を保持するOrderedDict
OrderedDictモジュールは標準モジュールに含まれているので、新たに何かをインストールする必要はありません。
利用する際は「OrderedDict」モジュールをインポートするだけで利用できます。
from collections import OrderedDict
OrderedDictの使い方
OrderedDictは通常の辞書(dict)型のサブクラスになっているので同様に使うことができます。
from collections import OrderedDict import pprint #それぞれの辞書型を確保 di1 = dict() di2 = dict() od1 = OrderedDict() od2 = OrderedDict() #順序を考慮して値設定 di1[ "0" ] = 0 di1[ "1" ] = 1 di1[ "2" ] = 2 od1[ "0" ] = 0 od1[ "1" ] = 1 od1[ "2" ] = 2 #順序が変わるように考慮して値設定 di2[ "0" ] = 0 di2[ "2" ] = 2 di2[ "1" ] = 1 od2[ "0" ] = 0 od2[ "2" ] = 2 od2[ "1" ] = 1 #結果表示 pprint.pprint( di1 ) pprint.pprint( di2 ) pprint.pprint( od1 ) pprint.pprint( od2 )
上記の実行結果は
{'0': 0, '1': 1, '2': 2} {'0': 0, '1': 1, '2': 2} OrderedDict([('0', 0), ('1', 1), ('2', 2)]) OrderedDict([('0', 0), ('2', 2), ('1', 1)])
となりdict型はどちらも順序がソートされ同じ出力結果になっているのに対し、OrderedDict型の方は、挿入した順序を保持し、その順序で出力されています。
まとめ
Pythonで挿入順序も保持してデータを管理したいのであればOrderedDictを利用するようにしましょう。
以上、Pythonで順序付きの辞書を作成する~OrderedDict~でした。