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以降を使用している方は、ぜひこの辞書の順序保証を活用してみてください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です