python - 对保留相同数字顺序的列表进行反向排序
问题描述
我有一个看起来像这样的列表
lst = ['3.0', '3.0 (key)', '2.0', '2.0 (key)', '1.0', '1.0 (key)', '1.1', '1.1 (key)']
我想对其进行反向排序,使其看起来仍然是相同的数字顺序,但带有文本的项目'(key)'
应该排在第一位。
['3.0 (key)', '3.0', '2.0 (key)', '2.0', '1.0 (key)', '1.0', '1.1 (key)', '1.1']
到目前为止我所做的是
lst.sort(reverse=True)
反转整个列表,忽略数字顺序导致:
['1.1', '1.1 (key)', '1.0 (key)', '1.0', '3.0', '3.0 (key)', '2.0 (key)', '2.0']
我想要的是
['1.0', '1.0 (key)', '1.1', '1.1 (key)', '2.0', '2.0 (key)', '3.0', '3.0 (key)']
解决方案
如果我理解正确,
def _first_element(elements):
return elements[0]
# First you zip the items to groups.
groups = zip(*[iter(self._takes)]*2)
# then sort the groups in reverse
zipped.sort(key=first_element, reverse=True)
then build a new list what
new_list=[]
for item in zipped:
new_list.append(item[-1])
new_list.append(item[0])
> new_list
> ['1.0', '1.0 (key)', '1.1', '1.1 (key)', '2.0', '2.0 (key)', '3.0', '3.0 (key)']
推荐阅读
- git - gitlab-runner:合并后重用工件
- java - 如何使这个删除测试独立?
- css - 展开仅包含具有绝对位置的图像的 div 高度
- spring-cloud - 如何将“Kafka Streams Binder”与“Functional Style”和DI一起使用?
- excel - 退出 Sub 后无法再次运行 sub
- angular - 在本机应用程序上显示图像
- bootstrap-datepicker - ngx-bootstrap datepicker 只有 50% 可见
- node.js - 登录持久化:移动端和桌面端的区别
- python - 排序列表中的元素包含称呼吗?
- rust - 为什么 clap 添加到 Cargo.toml 时编译失败?