python中的排序不起作用

python中的排序不起作用,python,python-3.x,sorting,Python,Python 3.x,Sorting,以下是我的完整代码示例: 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

以下是我的完整代码示例:

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']]
我的输出结果如下:

[['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
s进行排序。创建一个小的
lambda
,用于获取项目并将其强制转换为
int
,以获取基于
int
值的排序:

k = lambda x: int(x[0])    
sortedList = sorted(inputList,key=k,reverse=True)
[['20'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'],
 ['11'], ['10'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'],
 ['2'], ['1'], ['0']]
现在,
sortedList
根据
int
值进行排序:

k = lambda x: int(x[0])    
sortedList = sorted(inputList,key=k,reverse=True)
[['20'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'],
 ['11'], ['10'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'],
 ['2'], ['1'], ['0']]
如果您不介意一些卷积,请将lambda直接放在对
排序的调用中:

sortedList = sorted(inputList, key=lambda x: int(x[0]), reverse=True)

那是因为你在对代表数字的
str
s进行排序。创建一个小的
lambda
,用于获取项目并将其强制转换为
int
,以获取基于
int
值的排序:

k = lambda x: int(x[0])    
sortedList = sorted(inputList,key=k,reverse=True)
[['20'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'],
 ['11'], ['10'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'],
 ['2'], ['1'], ['0']]
现在,
sortedList
根据
int
值进行排序:

k = lambda x: int(x[0])    
sortedList = sorted(inputList,key=k,reverse=True)
[['20'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'],
 ['11'], ['10'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'],
 ['2'], ['1'], ['0']]
如果您不介意一些卷积,请将lambda直接放在对
排序的调用中:

sortedList = sorted(inputList, key=lambda x: int(x[0]), reverse=True)

在函数调用中使用lambda函数(如果只使用一次)。在函数调用中使用lambda函数(如果只使用一次)。