如何通过嵌套键对嵌套字典进行排序

时间:2015-02-01 15:03:54

标签: python dictionary multidimensional-array

我无法找到我正在寻找的问题,并且不理解那些已经存在的问题。 我有一个像这样的二维字典:

 {'alim2': {'running': 1470.0, 'swimming': 650.0, 'total': 2120.0, 'cycling': 0}, 'brownv4': {'running': 0, 'swimming': 0, 'total': 0, 'cycling': 0},
'mahroosm5': {'running': 1180.0, 'swimming': 590, 'total': 6647.0, 'cycling': 4877.0},
'turnerb3': {'running': 1180.0, 'swimming': 500, 'total': 1680.0, 'cycling': 0}}

这些数字基本上是每项运动所消耗的卡路里,我需要让程序按照“总”值的升序对键(像'brownv4'这样的用户名)进行排序。 如果输出可以作为字典的关键字,在这种情况下是用户名,那也是非常方便的。 他输出的信息如下: mahroosm5,alim2,turnerb3,brownv4

1 个答案:

答案 0 :(得分:3)

这不是真正的排序,因为字典是无序的,但你可以尝试使用sorted()key一篇好文章here,如果你真的需要一个字典,你可以放{{1}在Ordered Dict

中返回值
sorted()

<强>输出:

import pprint

my_dict = {'alim2': {'running': 1470.0, 'swimming': 650.0, 'total': 2120.0, 'cycling': 0}, 'brownv4': {'running': 0, 'swimming': 0, 'total': 0, 'cycling': 0},
'mahroosm5': {'running': 1180.0, 'swimming': 590, 'total': 6647.0, 'cycling': 4877.0},
'turnerb3': {'running': 1180.0, 'swimming': 500, 'total': 1680.0, 'cycling': 0}}

pprint.pprint(sorted(my_dict.items(), key=lambda key_:key_[1]['total'])) 

此外,如果您想要颠倒它,您可以添加[('brownv4', {'cycling': 0, 'running': 0, 'swimming': 0, 'total': 0}), ('turnerb3', {'cycling': 0, 'running': 1180.0, 'swimming': 500, 'total': 1680.0}), ('alim2', {'cycling': 0, 'running': 1470.0, 'swimming': 650.0, 'total': 2120.0}), ('mahroosm5', {'cycling': 4877.0, 'running': 1180.0, 'swimming': 590, 'total': 6647.0})] 参数。