[Python] 辞書で、追加順を記憶するOrderedDictの使い方
こんにちは、@yoheiMuneです。
Pythonの辞書(
最後になりますが本ブログでは、フロントエンド、Node.js、Linux、Java、Python、インフラ、Swift、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
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の使い方
OrderedDict
はcollectionsパッケージに含まれます。インポートして利用します。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言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時に、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!