首页 > 解决方案 > 使用单循环根据元素出现对python列表进行排序

问题描述

我有一个问题,要根据元素的出现对 python 列表进行排序。

例如:

#input list: 
l = [5,5,5,2,2,4,4,4,4,1]

#output list 
[4, 4, 4, 4, 5, 5, 5, 2, 2, 1]

我能够解决这个问题,但我使用了 3 个循环,任何人都可以帮助我使用单个循环以某种 Python 方式执行此操作。如果你愿意,我可以分享我的解决方案。谢谢

标签: pythonpython-3.xlist

解决方案


你可以collections.Counter用来计算元素,然后按那个排序

>>> from collections import Counter
>>> l = [5,5,5,2,2,4,4,4,4,1]
>>> c = Counter(l)
>>> sorted(l, key=lambda i: c[i], reverse=True)
[4, 4, 4, 4, 5, 5, 5, 2, 2, 1]

推荐阅读