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

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

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

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


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

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の使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。