1. ホーム
  2. python

[解決済み] 辞書をキーでソートするにはどうしたらいいですか?

2022-03-16 20:35:30

質問

から {2:3, 1:89, 4:5, 3:0} から {1:89, 2:3, 3:0, 4:5} ?
いくつかの投稿を確認しましたが、すべてタプルを返す "sorted"演算子を使用しています。

どのように解決するのですか?

Pythonの標準的な辞書は、(Python 3.7まで)順序付けされていません。たとえ(キー,値)のペアをソートしたとしても、それを dict を、順序を保持する方法で実行します。

最も簡単な方法は 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

Python 3

Python 3 をお使いの方は、Python 3 に対応するために .items() の代わりに .iteritems() :

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