順序保持ディクショナリ (2.6以前) | Python-izm

順序保持ディクショナリ (2.6以前)

Python標準のディクショナリ追加した順番は保持してくれません。keyを指定する場合は問題ありませんが、追加した順序通りに取得したい場合は、PyPIよりordereddict.OrderedDictを入手します。
※これはPython 2.6 以前を対象としています。Python 2.7 以降で追加した順番を保持するディクショナリを使用したい場合は、標準ライブラリであるcollections.OrderedDictを使用してください。

ordereddict.OrderedDict

まずは標準のディクショナリの出力を見てみましょう。

Python 2系

# -*- coding: utf-8 -*- 

test_dict = {}
    
test_dict['word'] = 'doc'
test_dict['excel'] = 'xls'
test_dict['access'] = 'mdb'
test_dict['powerpoint'] = 'ppt'
test_dict['notepad'] = 'txt'
test_dict['python'] = 'py'

for key in test_dict:
    print key

何度か実行してみてください。実況環境や実行タイミングによって出力される順番が異なることが確認できます。

word
python
notepad
excel
access
powerpoint

次はordereddict.OrderedDictを使用してみましょう。下記コマンドを入力しordereddictモジュールをインストールしてください。
※これはpipがインストールされていることを前提としています。インストールしていない場合はpipの使い方とインストールを参照してください。

pip install ordereddict

インストール後は次のように使用することができます。標準ライブラリの方のOrderedDictとはモジュールが異なるので注意しましょう。

Python 2系(2.7を除く)

# -*- coding: utf-8 -*-

import ordereddict

test_dict = ordereddict.OrderedDict()

test_dict['word'] = 'doc'
test_dict['excel'] = 'xls'
test_dict['access'] = 'mdb'
test_dict['powerpoint'] = 'ppt'
test_dict['notepad'] = 'txt'
test_dict['python'] = 'py'

for key in test_dict:
    print key
word
excel
access
powerpoint
notepad
python