如何按值对字典排序并生成列表,从大到小排序?
我看过一些关于如何在Python中排序字典的帖子,但我发现的解决方案并没有按照我想要的顺序来排序字典。我找到的代码是这样的:
results = sorted(results.items(), key=lambda x: x[1])
这段代码会生成一个从小到大的键值对列表,但我想要的是从大到小的排序。这里有没有简单的解决办法呢?
1 个回答
4
反转列表:
results = sorted(results.items(), key=lambda x: x[1])
results.reverse()
或者更好一些:
results = sorted(results.items(), key=lambda x: x[1], reverse=True)
或者最好:
results = sorted(results.items(), cmp=lambda a,b: b[1]-a[1])
虽然奇怪的是,第一个选项是最快的:
In [48]: %timeit sorted(x.items(), key=lambda x: x[1]).reverse()
100000 loops, best of 3: 2.93 us per loop
In [49]: %timeit sorted(x.items(), key=lambda x: x[1], reverse=True)
100000 loops, best of 3: 3.24 us per loop
In [50]: %timeit sorted(x.items(), cmp=lambda a,b: b[1]-a[1])
100000 loops, best of 3: 3.11 us per loop