私の頭に浮かぶ最初の解決策は、辞書を平らにし、結果リストを並べ替えることです。例えば
:
dictionary_of_dictionaries = {
'RandomUserName': {'6/30/15': 2},
'AnotherRandomUserName': {'5/25/16': 8},
'AThirdRandomUserName': {'1/12/15': 5}
}
flattened = [(k,) + tuple(dic.iteritems()) for k, dic in dictionary_of_dictionaries.iteritems()]
print flattened
プリント:
[('AnotherRandomUserName', ('5/25/16', 8)), ('RandomUserName', ('6/30/15', 2)), ('AThirdRandomUserName', ('1/12/15', 5))]
そして、あなたがそれらをしたいために、エントリを印刷し
flattened.sort(key= lambda x:x[1][1])
print flattened
このリストをソートします。
[('RandomUserName', ('6/30/15', 2)), ('AThirdRandomUserName', ('1/12/15', 5)), ('AnotherRandomUserName', ('5/25/16', 8))]
この最初の溶液中で、私は2番目の辞書が一つだけ日付フィールドが含まれていることを想定していないことをしてください。もっと複雑な例では、内側の辞書のタプルが常に同じ順序で平坦化されていることを確認する必要があります。
この問題を解決ソリューション(あなたの内側の辞書はフィールドのトンが含まれている場合は非常にパフォーマンスではありません)
dictionary_of_dictionaries = {
'RandomUserName': {'6/30/15': 2 , 'name' : 'foo'},
'AnotherRandomUserName': {'5/25/16': 8, 'name' : 'bar'},
'AThirdRandomUserName': {'1/12/15': 5, 'name' : 'baz' }
}
flattened = [(k,) + tuple(sorted(dic.iteritems(), key=lambda x: x[0])) for k, dic in dictionary_of_dictionaries.iteritems()]
print flattened
flattened.sort(key= lambda x:x[1][1])
print flattened
[値によってPythonの辞書をソート]の可能複製(HTTPS ://stackoverflow.com/questions/613183/sort-a-python-dictionary-by-value) – alfasin
これをチェックしましたか[link](https://stackoverflow.com/questions/613183/sort-a-python-辞書による値) – imanzabet
'RandomUserName'に' {'6/30/15':2、 '6/30/16':3} 'のような2つのキーで' dict'が含まれているとどうなりますか? – randomir