python-3.x - 根据整数对列表进行排序返回错误的排序
问题描述
我正在尝试对每个索引中包含一个整数和一个字符串的列表进行排序。就像例子中的那个。
我使用sort()
并拆分,但我总是得到我期望的错误命令
def takeSecond(elem):
return elem.split("|")[2]
list = ['|val1: 0|0','|val: 0|80','|val1 0|140','|val1: 0|20','|val1: 0|90']
list.sort(key=takeSecond)
print(list)
返回:
['|val1: 0|90','|val: 0|80','|val1: 0|20','|val1: 0|0','|val1 0|140']
我希望得到这个:
['|val1: 0|140','|val: 0|90','|val1: 0|80','|val1: 20|0','|val1 0|0']
我在这里的错误在哪里?
解决方案
试试这个:
l = ['|val1: 0|0','|val: 0|80','|val1 0|140','|val1: 0|20','|val1: 0|90']
l.sort(key=lambda x:int(x.rsplit('|')[-1]), reverse=True)
这将根据您的需要对列表进行排序。预期的输出是:
In [18]: l
Out[18]: ['|val1 0|140', '|val1: 0|90', '|val: 0|80', '|val1: 0|20', '|val1: 0|0']
另外请注意:
不要
list
用作变量名。list 是 python 中的内置名称,您将覆盖它的功能。
推荐阅读
- reactjs - SVG use variables with ReactJS
- android - 我们是否需要 Play 管理中心帐户来显示 admob 横幅广告和插页式广告?
- google-api - 使用 API 和 Postman 将新域发布到 Google 日历资源
- ios - Video converted from mov to mp4 on iOS can not be played on browser etc
- azure - Setup Database Context for Entity Framework 6 using Environmental Variables
- android - 屏幕旋转时导致跳帧的片段
- javascript - Defining listener on web navigation on pages declared by user aka How to define mutable host in background.js?
- angular - 获取 Firebase Firestore 集合中最后创建的文档
- google-app-engine - 使用假登录用户测试 GAE 处理程序
- forms - 什么是真正的 HTTP 请求?