python - 从文本文件中订购具有多种数据类型的列表

标签 python list sorting text-files

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

相关文章:

Python:Selenium 在表单的文本框中写入

list - LINQ 查询从 csv 文件的列表中查找元素

c++ 使用 std::list 隐式复制 *this

java - 在快速排序算法中寻找聪明的主元

r - 按出现频率对数据框列进行排序

python - 允许远程访问 Elasticsearch

python - Django South - 为已经填充表格的应用程序创建初始迁移

python - 在 Python 中提取和清理 HTML 正文文本的最快、最无错误的方法是什么?

python - 如何命名将整数列表转换为对列表的函数?

javascript - jQuery:根据不同子div的内容对div进行排序