10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

sortした辞書型を、辞書型に戻す方法

Last updated at Posted at 2019-05-10

はじめに

辞書型をソートした場合としなかった場合で関数の戻り値の型が変わってしまうという問題に当たったのでその解決策を書いておきます。

*この記事は、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/

10
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?