Pythonで順序を保ったまま辞書を扱うOrderedDictの使い方

Pythonでは、いわゆる連想配列やハッシュとしてディクショナリ(辞書)が用意されています。今回はOrderedDict()メソッドを使って順序付きディクショナリを操作する方法について説明します。

順序付き辞書の作成方法

順序付き辞書を使うためには、collectionモジュールのインポートが必要です。まず、空のOrderedDictオブジェクトを生成します。次に要素を追加していきます。要素の追加方法は通常の辞書と同じです。

from collections import OrderedDict

fruits = OrderedDict()
fruits['apple']  = '100yen'
fruits['orange'] = '150yen'
fruits['banana'] = '200yen'

print fruits

for k, v in fruits.items():
    print k, "\t: ", v

上のプログラムを実行すると結果は以下のようになります。

OrderedDict([('apple', '100yen'), ('orange', '150yen'), ('banana', '200yen')])
apple 	:  100yen
orange 	:  150yen
banana 	:  200yen

このように要素が追加した順に登録され、for文で実行しても順序が保たれていることが確認できます。

OrderedDict()を使う際の注意点

順序付き辞書は、要素を追加した順番を記憶することしかしてくれません。例えば、次のようなプログラムでは順番は維持されません。

item = OrderedDict(apple='100yen',orange='150yen', banana='200yen')

上のプログラムの実行結果は以下のようになります。

OrderedDict([('orange', '150yen'), ('banana', '200yen'), ('apple', '100yen')])

このように、OrderedDict()を生成する際に記述した要素の順番は記憶してくれません。このため、OrderedDict()を使う際には、まず空の辞書を生成し、要素を追加するといった手順を踏む必要があります。


イベント

2017/12/05(火)
Design Thinking Square