按值排序字典而不丢失密钥信息

这个问题在这里已经有了答案:

  • 如何按价值对字典进行排序? 38个答案

  • 如果你想保留一个键/值结构的排序结果,我推荐collections.OrderedDict

    from collections import OrderedDict
    from operator import itemgetter
    
    dct = {'Rick Porcello, Bos SP': 579.0, 'Chris Sale, CWS SP': 575.0, 'Justin Verlander, Det SP': 601.0, 'Madison Bumgarner, SF SP': 617.0, 'Max Scherzer, Wsh SP': 668.0, 'Johnny Cueto, SF SP': 584.0}
    
    OrderedDict(sorted(dct.items(), key=itemgetter(1), reverse=True))
    

    key=itemgetter(1)定义了你按“价值观”和reverse=True告诉sorted的降序排序。

    这给出:

    OrderedDict([('Max Scherzer, Wsh SP', 668.0),
                 ('Madison Bumgarner, SF SP', 617.0),
                 ('Justin Verlander, Det SP', 601.0),
                 ('Johnny Cueto, SF SP', 584.0),
                 ('Rick Porcello, Bos SP', 579.0),
                 ('Chris Sale, CWS SP', 575.0)])
    

    并且仍然可以像普通字典那样访问:

    >>> odict['Chris Sale, CWS SP']
    575.0
    

    或者遍历它:

    >>> for name, value in odict.items():
    ...     print('{name}: {value}'.format(name=name, value=value))
    Max Scherzer, Wsh SP: 668.0
    Madison Bumgarner, SF SP: 617.0
    Justin Verlander, Det SP: 601.0
    Johnny Cueto, SF SP: 584.0
    Rick Porcello, Bos SP: 579.0
    Chris Sale, CWS SP: 575.0
    

    鉴于它对输入进行排序,它将用O(n logn)缩放。

    链接地址: http://www.djcxy.com/p/18167.html

    上一篇: Sorting dictionary by values without losing information of keys

    下一篇: How to sort the output of a word count