按值排序字典而不丢失密钥信息
这个问题在这里已经有了答案:
如果你想保留一个键/值结构的排序结果,我推荐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)
缩放。
上一篇: Sorting dictionary by values without losing information of keys