例如:
list = [5,6,8,9,8,8,3,4,4,6,6]
sorted_list = [6,6,6,8,8,8,4,4,5,9,3]
知道为什么该解决方案不适用于[1,3,3,3,2,2,2,1,1].输出为[3,3,3,2,2,2,2,1,1, 1],但正确的输出是[1,1,1,3,3,3,2,2,2,2]
再次感谢
>>> from collections import Counter
>>> lst = [5,6,8,9,8,8,3,4,4,6,6]
>>> c = Counter(lst)
>>> sorted(lst, key = lambda x : (c[x], x), reverse = True)
[8, 8, 8, 6, 6, 6, 4, 4, 9, 5, 3]
编辑:
正如MSeifert所评论的那样,应按出现的顺序(而不是元素的值)来断开关系.可以使用原始列表上的index函数完成此操作:
>>> sorted(lst, key = lambda x : (-1 * c[x], lst.index(x)))
[6, 6, 6, 8, 8, 8, 4, 4, 5, 9, 3]