我有一个.csv文件,它包含两列我要排序的列.我想按字母顺序对第一列进行排序,将第二列按最高编号排序到最低.
我习惯sortedColumn = sorted(csv_opener,key=operator.itemgetter(0))
按字母顺序对第一列进行排序,但我也希望对第二列做同样的事情.我该怎么做呢?
您可以通过让key
callable返回一个元组来对两个方面进行排序.
我假设第二列是一个可转换为整数的字符串:
sortedColumn = sorted(csv_opener, key=lambda row: (row[0], -int(row[1])))
通过返回负值,row[1]
您可以从最高到最低排序,而主要排序是完成或row[0]
按字母顺序排序.
所以对于样本行:
Alpha, 10 Beta, 30 Alpha, 42 Gamma, 81 Beta, 10
排序后的输出为您提供:
Alpha, 42 Alpha, 10 Beta, 30 Beta, 10 Gamma, 81
首先按字母顺序排序第一列,然后在第一列中输出相等的值,行按第二列的降序排序.