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)

しかし、これは私にとってはうまくいきません。私が望むように配置されていない最初の場所に基づいて列を配置します.ie:

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 に答える