我认为这对于A来说将是一项好工作collections.Counter
:
counts = collections.Counter(lst)
new_list = sorted(lst, key=lambda x: -counts[x])
或者,您可以写第二行而不使用lambda:
counts = collections.Counter(lst)
new_list = sorted(lst, key=counts.get, reverse=True)
如果您有多个具有相同频率的元素 并且 您希望这些元素保持分组状态,那么我们可以通过更改排序键以不仅包括计数,还包括 值 来做到这一点:
counts = collections.Counter(lst)
new_list = sorted(lst, key=lambda x: (counts[x], x), reverse=True)