はじめてのPython!順序付き辞書(OrderedDict)とは?使い方を紹介

Dictionaryはキーと紐づく値を設定してデータを作るのに便利ですが、さらに便利な使い方ができる辞書型としてOrderedDictがあります。

「辞書型(Dictionary)の使い方をおさらいしたい」
「順序付け辞書(OrderedDict)」の使い方を知りたい」

といった方に向けてこの記事では以下の内容を解説していきます!


【基礎】Dictionaryとは
【基礎】OrderedDictとは
【基礎】OrderedDictの使い方
【発展】OrderedDictの注意点

本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。

→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説

なお、その他のPythonの記事についてはこちらにまとめています。

目次

Dictionaryとは

順序付き辞書であるOrderedDictの解説に入る前に、辞書型(Dictionary)についておさらいしておきましょう。

辞書(dictionary)型とは、「カギカッコ{}」の中にkeyとvalueからなるデータが含まれるオブジェクトのことを指します。

辞書型は以下のようにkeyとvalueを記述します。

このように、辞書型のオブジェクトは要素にkeyと紐づくvalueをコロンで区切ったペアとなります。

それぞれのペアはカンマで区切ります。

辞書型についてもっと知っておきたい方は以下の記事を参考にしてください!

OrderedDictとは

OrderedDictは通常のDictionaryと構造は似ていますが、違いとして設定された要素の順番を保持されます。

Dictionaryは順序を保つことができません。

OrderDictを使用するためにはcollectionsモジュールのOrderDictをインポートする必要があります。

from collections import OrderedDict

次項よりそんなOrderDictの具体的な使い方について見ていきましょう

OrderedDictの使い方

先程と同様の辞書の内容をOrderedDictで定義して値を出力してみましょう。

from collections import OrderedDict

dict = OrderedDict()

dict['yamada'] = 21
dict['tanaka'] = 18
dict['suzuki'] = 30

for key, val in dict.items():
    print(key, val)

実行結果:

yamada 21
tanaka 18
suzuki 30

OrderedDictを使用すれば追加した要素の順番が保持されることがわかりますね。

OrderedDictの注意点

OrderDictの注意点として、要素をまとめて追加した場合は順序を記憶してくれません。

以下のプログラムを実行すると、Dictionaryと同様に順序が保持されません。

from collections import OrderedDict

dict = OrderedDict(yamada=21, tanaka=18, suzuki=30)

for key, val in dict.items():
    print(key, val)

実行結果:

yamada 21
suzuki 30
tanaka 18

そのため、順序付けで辞書を作りたい場合はOrderedDictで「dict[key] = value」のように1つずつ値を追加する必要があります。


Pythonのバージョン3.6より引数の順序も保持されるようになりました。

バージョン 3.6 で変更: PEP 468 の受理によって、OrderedDict のコンストラクタと、update() メソッドに渡したキーワード引数の順序は保持されます。/ 詳細はこちら

まとめ

この記事では順序付けで辞書型のオブジェクトを作れるDictionaryについて解説しました。

  • Dictionaryとは
  • OrderedDictとは
  • OrderedDictの使い方
  • OrderedDictの注意点

OrderedDictは、辞書の要素の順番を保持したいときに便利な辞書型ですので使い方についてはしっかりと理解しておきましょう。

もし、OrderedDictの使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次