2017-04-17 91 views
0

我有一個很大的txt文件,由製表符和兩列分隔,我扔在一起快速排序,但它不能正常工作。例如,可以說我的專欄看起來像: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

你正在排序字符串不是數字。你需要將第二列元素轉換爲int

0

這裏的問題是這裏的第一個元素(東西的值)是字符串,並且正在進行比較。 「6」>「56」>「4」與「C」>「BC」>「A」一樣。

考慮讓您的密鑰爲一個lambda,它將傳入列表的第一個元素,然後調用int。也許:key=lambda element: int(element[1])

+0

這是完美的,謝謝。我完全錯過了這一點。 – W11B2349

+0

然後絕對隨時upvote /接受答案:) –