在python排序不工作
问题描述:
这里是我完整的代码示例:在python排序不工作
import csv
import operator
f=open('C://Users//ganesha//Desktop//b//sampleDataCsv.csv',"r")
readerObject1 = csv.reader(f,delimiter = ",")
inputList = list(readerObject1)
print("Input",inputList)
sortedList = sorted(inputList,key=operator.itemgetter(0),reverse=True)
print("Output",sortedList)
f1=open('C://Users//ganesha//Desktop//b//sampleDataCsv4.csv',"w+")
writerObject=csv.writer(f1,delimiter=",",lineterminator='\n')
writerObject.writerows(sortedList)
我的输入是这样的:
[['20'], ['12'], ['13'], ['11'], ['14'], ['15'], ['19'], ['1'], ['2'], ['4'], ['9'], ['0'], ['8'], ['7'], ['5'], ['6'], ['3'], ['16'], ['17'], ['10']]
而且我的输出出来是这样的:
[['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['20'], ['2'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'], ['11'], ['10'], ['1'], ['0']]
答
那是因为你正在排序代表数字的str
。创建一个小lambda
是获取项目并将它转换到int
基于int
值来获得一种:
k = lambda x: int(x[0])
sortedList = sorted(inputList,key=k,reverse=True)
现在sortedList
基础上,int
值进行排序:
[['20'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'],
['11'], ['10'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'],
['2'], ['1'], ['0']]
如果你不”不要介意一些卷积,将lambda直接放在呼叫sorted
:
sortedList = sorted(inputList, key=lambda x: int(x[0]), reverse=True)
如果仅使用一次,则在函数调用中使用lambda函数。 – Santos