如何从python中具有两列的文件中对数据进行排序

时间:2012-05-10 08:15:51

标签: python sorting

我的文件包含以下数据:

12, 9
13, 9  
45, 23
1, 4 
0, 8
91, 45
638, 56
123, 3  
2, 9

现在我需要做的就是这样:

0, 8
1, 4
2, 9
12, 9
13, 9
45, 23
91, 45
123, 3
638, 56

我尝试过使用:

import sys,csv    
import operator
reader = csv.reader(open('filename.txt'),delimiter=',')
sort = sorted(reader,key=operator.itemgetter(0),reverse=False)

但这不适合我。它根据第一个位置排列列,而不按我的意愿排列。 :

0, 8
1, 4
12, 9
123, 3
13, 9
2, 9
45, 23
638, 56
91, 45

请帮忙。

3 个答案:

答案 0 :(得分:5)

sorted(reader, key=lambda row: int(row[0]))

答案 1 :(得分:0)

我相信您在应用所描述的解决方案时获得的结果与预期一致。剩下的就是你需要将第一列转换为整数而不是使用字符串值(否则你会得到字典排序):

import sys,csv
import operator
reader = csv.reader(open('filename.txt'),delimiter=',')
sort = sorted(reader,key=lambda row: int(row[0]),reverse=False)

答案 2 :(得分:0)

我认为你在那里排序字符串。怎么样:

sort = sorted(tuple(int(x) for x in row) for row in reader)