web-dev-qa-db-ja.com

辞書をキーでソートする方法は?

キーで辞書をソートしようとしましたが、チャンスはありませんでした。これは私の口述です:

result={'1':'value1','2':'value2',...}

私はPython2.7を使用していますが、これを見つけました

keys = result.keys()
keys.sort()

しかし、これは私が期待したものではなく、ソートされていない辞書があります。

22
Imoum

標準Python辞書は本質的に順序付けられていません。ただし、 collections.OrderedDict 。挿入順序が保持されるため、必要なのは、キーと値のペアを目的の順序で追加することだけです。

In [4]: collections.OrderedDict(sorted(result.items()))
Out[4]: OrderedDict([('1', 'value1'), ('2', 'value2')])
9
NPE
sorted(result.iteritems(), key=lambda key_value: key_value[0])

これにより、ソートされた結果が出力されますが、辞書はソートされません。辞書の順序を維持する場合は、 OrderedDict を使用します

実際、keyでソートすると、key=...パート。反復されるアイテムは、最初にキーでソートされ、後で値でソートされるため(NPEが回答で使用するもの)

8
Jakub M.

Python辞書は順序付けられていません(定義のため)

代わりに OrderedDict を使用できます

2
DonCallisto