首页 > 解决方案 > 从文本文件中订购具有多种数据类型的列表

问题描述

正如标题所说,我正在尝试对具有多种数据类型的列表进行排序,即“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”

任何和所有的帮助表示赞赏。

标签: pythonlistsortingtext-files

解决方案


您看到的是字符串排序。例如,'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"]

推荐阅读