1

我有包含以下数据的文件:

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

请帮忙。

4

3 回答 3

5
sorted(reader, key=lambda row: int(row[0]))
于 2012-05-10T08:21:00.697 回答
0

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

import sys,csv
import operator
reader = csv.reader(open('filename.txt'),delimiter=',')
sort = sorted(reader,key=lambda row: int(row[0]),reverse=False)
于 2012-05-10T08:22:32.057 回答
0

我认为您正在那里对字符串进行排序。怎么样:

sort = sorted(tuple(int(x) for x in row) for row in reader)
于 2012-05-10T08:23:35.280 回答