次のような OrderedDicts で構成されたある種のトライがあります(ただし、順序が間違っています)。
test = {
'ab':{
'1':{},
'2':{
'002':{},
'001':{}}},
'aa':{
'02':{
'ac':{},
'01':{},
'ca':{},
'ab':{}},
'01':{
'b':{},
'z':{
'0':{},
'1':{}}}}
}
後続のすべてのレベルでこの辞書の完全な順序を取得するにはどうすればよいですか?
collections.OrderedDict(sorted(test.iteritems()))を使用すると、最初のレベルでのみソートされます。
どういうわけか最も深いレベルまで再帰的に呼び出す関数を作成する必要があると感じていますが、問題を解決するためにさまざまな方法を試すのに何時間も費やした後も、まだここで立ち往生しています。
最終的には次のようになります。
test = {
'aa':{
'01':{
'b':{},
'z':{
'0':{},
'1':{}}},
'02':{
'01':{},
'ab':{},
'ac':{},
'ca':{}}},
'ab':{
'1':{},
'2':{
'001':{},
'002':{}}}
}