【问题标题】:How to sort a nested dictionary by a nested key如何通过嵌套键对嵌套字典进行排序
【发布时间】:2015-03-31 14:16:39
【问题描述】:

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

 {'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

【问题讨论】:

    标签: python dictionary multidimensional-array


    【解决方案1】:

    它不是真正的排序,因为字典是无序的,但你可以尝试使用 sorted()key 一篇不错的文章 here,如果你真的需要一个字典,你可以将 sorted() 返回值放入 Ordered Dict

    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})]  
    

    此外,如果您希望它反转,您可以添加 reverse=True 参数。

    【讨论】:

    • 这确实对字典进行了排序,但我想将用户名打印为输出;燃烧卡路里最多的用户名。谢谢
    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 2021-05-17
    • 2023-03-14
    • 2018-10-21
    • 1970-01-01
    • 2019-02-08
    • 2011-05-13
    • 2020-09-17
    相关资源
    最近更新 更多