首页 > 解决方案 > 带有键计数的 Python Sorted() 列表,给出奇怪的结果

问题描述

我正在尝试按单个项目的频率对下面的项目列表进行排序。最大的在前,最小的在后。我想看看我是否可以sorted()在尝试之前先使用collection.Counter.

到目前为止我的代码是;

items = [4, 6, 2, 2, 6, 4, 4, 4]
x = sorted(items, key=items.count, reverse=True)
print(x)

上面的代码打印;[4, 4, 4, 4, 6, 2, 2, 6] 而不是;[4, 4, 4, 4, 6, 6, 2, 2]

有人可以解释为什么它不去“ 6,6,2,2 ”吗?

标签: pythonpython-3.xsorting

解决方案


它这样做的原因最好由该函数的文档解释:

内置的 sorted() 函数保证是稳定的。一个排序是稳定的,如果它保证不改变比较相等的元素的相对顺序——这有助于多次排序(例如,按部门排序,然后按薪级排序)。

https://docs.python.org/3/library/functions.html#sorted


推荐阅读