正如标题所说,我正在尝试对具有多种数据类型的列表进行排序,即“123 - abc”、“20 - xyz”等。我尝试使用 .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"]
关于python - 从文本文件中订购具有多种数据类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808093/