python - 使用单循环根据元素出现对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 方式执行此操作。如果你愿意,我可以分享我的解决方案。谢谢
解决方案
你可以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]
推荐阅读
- java - 如何进行反向“flatMap”操作
- sql - 在 DBeaver 中使用窗口函数时出现语法错误
- javascript - 向 Vue 和/或 Tiptap 中的简单 html 标签添加功能(javascript?)?
- javascript - Google Apps Script / Slack - 异步或快速响应
- php - redis中的php存储会话
- javascript - 如果多个div需要滚动,如何有条件地添加滚动?
- vb.net - 运行代码时不显示 Windows 窗体 GUI
- swift - 拖放,催化剂
- typescript - 如何推断联合的泛型类型参数?
- linux - 在 docker 中创建容器时,只有分发文件系统的快照是什么意思?