2016-09-22 9 views
0

が動作していないことはここでは私の完全なコードサンプルです: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']] 

答えて

3

それは数字を表すstrをソートしているからです。 int値に基づいて並べ替えを取得するためのアイテムを取得し、intにそれをキャスト小さなlambda作成:

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

を今すぐsortedListint値に基づいてソートされます。

[['20'], ['19'], ['17'], ['16'], ['15'], ['14'], ['13'], ['12'], 
['11'], ['10'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], 
['2'], ['1'], ['0']] 

あなたはドンが」いくつかの畳み込みを心に留めて、sortedへの呼び出しで直接ラムダを置く:

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

ラムダ関数を関数呼び出しの中で一度だけ使用する場合は、関数内でラムダ関数を使用します。 – Santos