如何按值对字典排序并生成列表,从大到小排序?

5 投票
1 回答
5575 浏览
提问于 2025-04-17 23:03

我看过一些关于如何在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

撰写回答