2017-03-23 178 views
0

我遇到了OrderedDicts和排序有点问题。键排序嵌套字典

目前,我有以下布局的字典:

{"da": {1.0 : [], 1.5 : []}, "en" : {1.2 : [], 1.8 : []}} 

我想要做的排序是按降序键值每个嵌套的字典。 所以输出应该是这样的:

{"da": {1.5 : [], 1.0 : []}, "en" : {1.8 : [], 1.2 : []}} 

使用OrderedDict证明了相当大的挑战

outputDict = OrderedDict(sorted(inputDict.items(), key=lambda t: t[1].keys())) 

这给了我:

OrderedDict([('en', {1.2: [], 1.8: []}), ('da', {1.0: [], 1.5: []})]) 
+1

那么*它给你什么?你似乎在整理外部字典,但期望内部字典发生变化。 – jonrsharpe

+0

你是对的。我将编辑它以正确反映它。 –

+0

't [1] .keys()'将在Python 2中以任意字典顺序*产生一个字典视图(Python 3)或一个键列表*。对任何一个排序都没有多大意义。 –

回答

2

你可以试试这个:

import collections 

a={"da": {1.0 : [], 1.5 : []}, "en" : {1.2 : [], 1.8 : []}} 

print {k:collections.OrderedDict(sorted(v.items(),reverse=True)) for k,v in a.items()} 

输出:

{'en': OrderedDict([(1.8, []), (1.2, [])]), 'da': OrderedDict([(1.5, []), (1.0, [])])} 
+0

这给了我想要的东西。谢谢 –