2016-09-09 5 views
2

私はPythonで入れ子になった辞書をソートしようとしています。Pythonで入れ子になっている辞書のリストをソートする

今は辞書の辞書があります。私は辞書を構築する前にリストにソートされた外部キーを並べ替えることができましたが、同時に内部キーをソートすることはできません。

私はソートされたAPIを使いこなそうとしていますが、それでも問題はあります。

今私が持っている:

myDict = {'A': {'Key3':4,'Key2':3,'Key4':2,'Key1':1}, 
      'B': {'Key4':1,'Key3':2,'Key2':3,'Key1':4}, 
      'C': {'Key1':4,'Key2':2,'Key4':1,'Key3':3}}; 

しかし、私は希望:

myDict = {'A': {'Key1':1,'Key2':3,'Key3':4,'Key4':2}, 
      'B': {'Key1':4,'Key2':3,'Key2':1,'Key4':1}, 
      'C': {'Key1':4,'Key2':2,'Key3':3,'Key4':1}}; 

私は助けに感謝します!

+2

'collections.OrderedDict(ソート({ 'キー3':4 'キー2':3 'KEY4':2 'キー1':1} .items()))' – ozgur

+0

dictsは順不同です。上記のコメントのようにOrderedDictを見てください 詳細: http://stackoverflow.com/questions/526125/why-is-python-ordering-my-dictionary-like-so – GMarsh

+0

なぜ辞書をソートする必要がありますか? – wwii

答えて

1
>>> from collections import OrderedDict 

>>> def sortedDict(items): 
...  return OrderedDict(sorted(items)) 

>>> myDict = {'A': {'Key3':4,'Key2':3,'Key4':2,'Key1':1}, 
...   'B': {'Key4':1,'Key3':2,'Key2':3,'Key1':4}, 
...   'C': {'Key1':4,'Key2':2,'Key4':1,'Key3':3}} 

>>> sortedDict((key, sortedDict(value.items())) for key, value in myDict.items()) 
+0

私はOrderedDictを使用する必要がありますか?私はmyDictのキーを繰り返し、何らかの形で内側の辞書を並べ替えることができると考えていた。\t \t sorted(myDict [k] .items()、key = lambda x:x [0]、reverse = False); –

+0

@MikeHatcher辞書は順序付けられていないコレクションです。あなたが言ったように 'sorted'を辞書に適用すると、ソートされたタプルの配列が返されます。 dictに変換するために 'dict(sorted(..))'を呼び出すと、再び順序付けされなくなります。したがって、あなたは 'OrderedDict'を使う必要があります。 – ozgur

+1

ああ、私はそれを別の方法で生成しなければならないと思うので、私が行ったので、私が望む順序で印刷することができます。 –

関連する問題