python - 从文本文件中订购具有多种数据类型的列表
问题描述
正如标题所说,我正在尝试对具有多种数据类型的列表进行排序,即“123 - abc”、“20 - xyz”等。我尝试使用 .sort() 和 .sort() 以通常的方式对其进行排序。 sorted() 像这样:
import csv
x = open("leaderboard.txt","r")
reader = csv.reader(x)
allRows = [row for row in reader]
allRows.sort(reverse = True)
print(allRows)
但这命令它错了。
它应该按数字降序排列,“123 - xyz”“20 - abc”“10 - xyz”,但它的顺序为“20 - abc”“123 - xyz”“10 - xyz”
任何和所有的帮助表示赞赏。
解决方案
您看到的是字符串排序。例如,'100'
将在之前排序'2'
(按升序排列),因为每个字符都是按顺序排列的。您需要提供一个key
带有自定义函数的参数,该函数将您的字符串的一部分转换为int
:
L = ["123 - xyz", "20 - abc", "10 - xyz"]
res = sorted(L, key=lambda x: int(x.split()[0]), reverse=True)
["123 - xyz", "20 - abc", "10 - xyz"]
推荐阅读
- jquery - 使用 Jquery 进行动态搜索
- scipy - 对对象使用 scipy 层次聚类
- android - 不更新目标NDK平台有什么好处吗?
- python - Beautifulsoup python 类解析
- vim - Vim Fugitive:切换“:Gblame”功能
- c# - WPF:DoubleAnimation“到”属性绑定时间
- javascript - 更改组件的路由
- sql-server - SQL Server Migration Assistant for Access 是否保留表关系?
- php - 如何更改父类函数中受保护变量的值
- amazon-ec2 - 自动为 Spot 实例分配 IP 地址