2017-04-17 110 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 /接受答案:) –