2018/02/21更新

[Python] 辞書で、追加順を記憶するOrderedDictの使い方

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
Pythonの辞書(Dictionary)で、データを追加した順を保持したい場合があります。その場合にはOrderedDictを使うと便利です。今日はその使い方をブログに書きたいと思います。



目次




Dictionaryでは順番が保持されない

通常の辞書(Dictionary)では、データを追加した順が保持されません。
d = dict()
d["one"] = 1
d["two"] = 2
d["three"] = 3
これをfor文で取り出すと、追加した順で取得することができません。
# for文での抽出例
for k, v in d.items():
  print(k, v)

# one 1
# three 3
# two 2
この場合に、追加した順で取り出したいとなると、これから説明するOrderedDictを使う必要があります。



OrderedDictとは

順序付き辞書(ordered dict)は、ほとんど普通の辞書と同じですが、データを追加した順を記憶します。そのため、OrderedDictからfor文で値を取り出すと、追加した順で値を取り出すことができます。



OrderedDictの使い方

OrderedDictcollectionsパッケージに含まれます。インポートして利用します。
from collections import OrderedDict
インスタンスの生成は、以下のように行います。
# インスタンスの生成
d = OrderedDict()
値の追加は、普通の辞書と同じです。
d["one"] = 1
d["two"] = 2
d["three"] = 3
この状態でイテレーションで1件ずつ取り出すと、追加順で取得することができます。
for key, value in d.items():
  print(key, value)

# one 1
# two 2
# three 3
そのほかにも、インスタンス生成時に値を渡して初期化する場合も、渡した値の順序を記憶します。
# 値を指定して初期化
d = OrderedDict((("a", "A"), ("b", "B"), ("c", "C")))

# 追加した順に取得できる.
for key, value in d.items():
  print(key, value)

# a A
# b B
# c C
このように、追加した順が必要な場合にはDictの代わりにOrderedDictを使います。便利ですね。



最後に

Pythonにはこのような便利機能がたくさんあります。それらを使いこなせるとより素敵にコードが書けます。こういうTipsを今後も書いていこうと思います。

最後になりますが本ブログでは、フロントエンド、Node.js、Linux、Java、Python、インフラ、Swift、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。