如何排序嵌套字典中的值,结果也应该是字典格式?如何排序Python中的字典字典
对于例如:
{ 1: {2: 3.4 ,3: 4.5, 4:1.2},
2: {3: 35.6 ,4: 6.7, 5:2},
3: {4:45, 6:75}
}
如何在该嵌套的字典的值进行排序以获得结果(排序反向)像: {1:{3:4.5; 2:3.4,4:1.2 }, 2:{3:35.6,4:6.7,5:2}, 3:{6:75,4:45}}
如何排序嵌套字典中的值,结果也应该是字典格式?如何排序Python中的字典字典
对于例如:
{ 1: {2: 3.4 ,3: 4.5, 4:1.2},
2: {3: 35.6 ,4: 6.7, 5:2},
3: {4:45, 6:75}
}
如何在该嵌套的字典的值进行排序以获得结果(排序反向)像: {1:{3:4.5; 2:3.4,4:1.2 }, 2:{3:35.6,4:6.7,5:2}, 3:{6:75,4:45}}
你所想实际上是不可能的。
如果写入字典,然后再读取,则读取顺序不必与写入顺序相匹配。
这可以直接在Python命令解释器来证明:
在这里我们将写入上述D指定的答案...
>>> d = { 1: {3:4.5, 2:3.4, 4:1.2}, 2: {3: 35.6 ,4: 6.7, 5:2}, 3: {6:75, 4:45} }
但是,如果我们提出要求的时候,我们得到的东西不同....这就是类型字典的工作原理。
>>> d
{1: {2: 3.4, 3: 4.5, 4: 1.2}, 2: {3: 35.6, 4: 6.7, 5: 2}, 3: {4: 45, 6: 75}}
课:如果你想有一个数据结构,它是排序或记得有一个排序顺序,使用阵列或列表,或@JesseMu建议,一个OrderedDict
这里我将展示如何解决数组的排序问题。
相反,假设输入数据是对数组的数组,像这样:
d = [ [(2, 3.4), (3, 4.5), (4, 1.2)],\
[(3, 35.6), (4, 6.7), (5, 2)],\
[(4, 45), (6,75) ]\
]
然后,你需要做的是逆向排序每个阵列由第二字段的值(这是场1,因为第一个字段是字段0),并且看起来像这样:
d_sorted = [sorted(a, key=lambda p: -p[1]) for a in d]
d_sorted
[[(3, 4.5), (2, 3.4), (4, 1.2)], [(3, 35.6), (4, 6.7), (5, 2)], [(6, 75), (4, 45)]]
或'OrderedDict'。 – jayelm 2014-09-27 05:52:29
字典永远不可排序。数组可排序。 – Paul 2014-09-27 05:40:39
即使我使用字典的列表,我仍然需要对tat字典中的值进行排序吗?我很困惑如何做到这一点?!! – 2014-09-27 05:55:05