Python 3.7から(非公式には3.6から)dict
がキーの順序を保証するようになりました。これは、collections.OrderedDict
相当の動作になります。
例えば、pandasでデータ集計をした時にDataFrameのカラム名を日本語に直した上で順序も入れ替えたい、ということはあるでしょう。Python 3.7以降では、こんな風に辞書を1つ書けばOKです。
import pandas as pd
df = pd.DataFrame(...) # カラムの順序を "name, age, salary" にした上で、日本語に置き換えたい
mapper = {
"name": '名前',
"age": "年齢",
"salary": "年収",
}
output = df[mapper.keys()].rename(columns=mapper)
Python 3.5では、辞書の順序が保存されないので、カラムの順序が入れ替わってしまうかもしれません。カラムの順序を保存するには、別途順序を表すリストを用意するか、順序を保証するOrderedDict
を使うしかありませんでした。
しかし、Python 3.7なら、DRYで見やすい辞書リテラルを、何のデメリットも無く使えるのです。これは、Pythonの辞書が順序を保存するようになった大きな利点の一つです。
この変更により、Pythonの辞書はより強力で使いやすいツールになりました。Python 3.7以降を使用している方は、ぜひこの辞書の順序保証を活用してみてください。