我有一个 .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
首先在第一列上按字母顺序排序,然后第一列中的值相等,行在第二列上按降序排序。
