items = [4, 6, 2, 2, 6, 4, 4, 4] result = sorted(items, key = items.count, reverse= True)
这输出 [4, 4, 4, 4, 6, 2, 2, 6]
而不是我所期望的: [4, 4, 4, 4, 6, 6, 2, 2]
问题是 2 和 6 在您的列表中具有相同的频率,因此它们的排序顺序是任意的。如果您想先按频率排序,然后按值排序,您可以利用以下事实轻松做到这一点:元组首先按索引 0 中的值排序,然后按索引 1 中的值排序,依此类推。
为此,我们可以创建一个构造项目计数和值的元组的函数,并将该函数用作排序键:
items = [4, 6, 2, 2, 6, 4, 4, 4] sort_key = lambda x: (items.count(x), x) result = sorted(items, key = sort_key, reverse = True)
输出:
[4, 4, 4, 4, 6, 6, 2, 2]