您可以尝试使用operator.itemgetter(),这使它非常直观。在import csv
from operator import itemgetter
rows = []
with open("Thisfile.csv", "rb") as f:
csv_reader = csv.reader(f1)
for row in csv_reader:
rows.append(row)
# This sorts by column #2 in descending order:
sorted_rows = sorted(rows, key=itemgetter(2), reverse=True)
>>>
[['BIRCH', 'Darren', '9'],
['ANDERSON', 'Jane', '7'],
['MCKOLEEP', 'Philip', '6'],
['SMITH', 'Richard', '3']]
也可以通过将最后一行更改为以下内容来对列表进行适当排序:
^{pr2}$
附加:
如果在最后一列中有重复的数值,您还可以方便地进行二次排序,例如,在按数值排序后,可以按姓氏排序。例如,如果csv中有以下行:ANDERSON,Jane,7
BIRCH,Darren,9
MCKOLEEP,Philip,6
SMITH,Richard,3
WELSH,John,3
然后可以使用以下行进行排序:sorted_rows = sorted(rows, key=itemgetter(2,0), reverse=True)
这首先按列#2排序,然后再按列#0进行排序,全部按降序排列,得到以下输出:[['BIRCH', 'Darren', '9'],
['ANDERSON', 'Jane', '7'],
['MCKOLEEP', 'Philip', '6'],
['WELSH', 'John', '3'],
['SMITH', 'Richard', '3']]