Skip to main content
 首页 » 编程设计

python之如何使用 sorted() 同时对两列进行排序

2025年05月04日16myhome

我有一个 .csv 文件,其中包含我要排序的两列。 我想按字母顺序对第一列进行排序,第二列按从大到小的顺序排序。

我使用 sortedColumn = sorted(csv_opener,key=operator.itemgetter(0)) 按字母顺序对第一列进行排序,但我也想对第二列执行相同的操作。我该怎么做?

请您参考如下方法:

您可以通过让 key 可调用返回一个元组来按两个方面进行排序。

我假设第二列是一个可转换为整数的字符串:

sortedColumn = sorted(csv_opener, key=lambda row: (row[0], -int(row[1]))) 

通过从 row[1] 返回 negative 值,您可以从高到低排序,同时完成主要排序或 row[0] 按字母顺序排列。

因此对于示例行:

Alpha, 10 
Beta, 30 
Alpha, 42 
Gamma, 81 
Beta, 10 

排序后的输出为您提供:

Alpha, 42 
Alpha, 10 
Beta, 30 
Beta, 10 
Gamma, 81 

首先在第一列上按字母顺序排序,然后第一列中的值相等,行在第二列上按降序排序。