2017-04-17 3 views
0

タブで区切られた大きなtxtファイルがあり、2つの列にまとめられていますが、正しくソートされていません。例えば、私の列は次のようになり言うことができます:Pythonソートエラー

thing1 2 
thing2 1 
thing3 4 
thing4 2 
thing5 56 
thing6 6 

私の並べ替えのコードは次のようになります。

#!/usr/bin/env python 
from operator import itemgetter 
import csv 
reader = csv.reader(open("test.txt"), delimiter="\t") 

for line in sorted(reader, key=itemgetter(1), reverse=True): 
    print(line) 

が、出力は次のようになります。

['thing6', '6'] 
['thing5', '56'] 
['thing3', '4'] 
['thing1', '2'] 
['thing4', '2'] 
['thing2', '1'] 

ので、56も '必要があります'それが大きいほど6の上にありますが、値全体ではなくその列の最初の桁でソートされているように見えます。私はちょうど何かばかなことをしたと確信していますが、どんな助けも高く評価されます。

ありがとうございました

答えて

0

あなたは数字ではない文字列をソートしていました。 2番目の列要素をintに変換する必要があります

0

ここでの第1要素(物の値)は文字列であり、そのように比較されます。 "6"> "56"> "4"と同じ方法で "C"> "BC"> "A"を選択します。

渡されたリストの最初の要素を取るラムダを作成し、intを呼び出してみましょう。おそらく:key=lambda element: int(element[1])

+0

これは完璧です、ありがとうございます。私はちょうどそれを完全に逃した。 – W11B2349

+0

それから絶対に自由にupvote /答えを受け入れる:) –