辞書をキーで並べ替えるにはどうすればいいですか? 質問する

辞書をキーで並べ替えるにはどうすればいいですか? 質問する

辞書をキーで並べ替えるにはどうすればいいですか?

入力例:

{2:3, 1:89, 4:5, 3:0}

望ましい出力:

{1:89, 2:3, 3:0, 4:5}

ベストアンサー1

注: Python 3.7以降については、この答え

dict標準の Python 辞書は順序付けされていません (Python 3.7 まで)。(キー、値) のペアを並べ替えたとしても、順序付けを保持したまま保存することはできません。

最も簡単な方法はOrderedDict要素が挿入された順序を記憶します。

In [1]: import collections

In [2]: d = {2:3, 1:89, 4:5, 3:0}

In [3]: od = collections.OrderedDict(sorted(d.items()))

In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])

どのようにod印刷されるかは気にしないでください。期待どおりに動作します。

In [11]: od[1]
Out[11]: 89

In [12]: od[3]
Out[12]: 0

In [13]: for k, v in od.iteritems(): print k, v
   ....: 
1 89
2 3
3 0
4 5

Python3 について

Python 3 ユーザーの場合は、 の.items()代わりにを使用する必要があります.iteritems()

In [13]: for k, v in od.items(): print(k, v)
   ....: 
1 89
2 3
3 0
4 5

おすすめ記事