はじめに
辞書型をソートした場合としなかった場合で関数の戻り値の型が変わってしまうという問題に当たったのでその解決策を書いておきます。
*この記事は、python3.6の環境なので辞書型の順序が保持されない事により想定する挙動の保証ができません。順序付き辞書は、python3.7以降から機能として実装されているのでそちらをお使いください。よってこの記事は、辞書型の順序の有無を確認してプログラムを行うべきという教訓になる記事として読んでください。*
解決策
Python 3.6.1
dic_sort.py
#PEP8に準拠
dic = {'A': 50, 'B': 20, 'C': 80, 'D': 10, 'E': 100}
list = sorted(dic.items(), key=lambda x: x[1], reverse=True)
dic.clear()
dic.update(list)
print(list)
print(dic)
結果
terminal
[('E', 100), ('C', 80), ('A', 50), ('B', 20), ('D', 10)]
{'E': 100, 'C': 80, 'A': 50, 'B': 20, 'D': 10}
解説
updateメソッドは(key,value)のリストを引数にできるので、dicをソートした戻り値が入っている変数listをclearされたdicに追加することでソートされた順のまま辞書型に戻すことができました。
注意点としては、(key,value)のリストを追加してもソートされた順が反映されるわけではありませんので、clearを行う必要があります。
参考にさせていただいたサイト
note.nkmk.me https://note.nkmk.me/python-dict-add-update/