2

行を並べ替えるために次の関数を作成し、行ごとに、行内のコンテンツを数値に並べ替えます。

次のような行:

67:1 45:1 67:1 89:1
31:1 89:5 45:1 23:1 

コード:

with open("SVM/svm-pos-train.txt") as f, open("SVM/svm-pos-train2.txt", 'w') as out:
                for line in f:
                    line = line.split()
                    line.sort(key = lambda x: int(x.split(':')[0]))
                    out.write(" ".join(line) + '\n')

これを編集して、次のように行から重複を削除するにはどうすればよいですか。

 45:1 67:1 89:1
 23:1 31:1 45:1 89:1

私は検索と試行錯誤を繰り返してきましたが、うまくいきませんでした。

4

2 に答える 2

7

使用セット

line = line.split()
line = list(set(line))

set一意の要素の順序付けられていないコレクションを返し、それをリストに戻してから、リストを並べ替えます。

編集:

line = line.split()
line = list(set(line))
out.write(" ".join(sorted(line, x: (int(x.split(':')[0]), int(x.split(':')[1])))) + '\n')
于 2013-06-05T16:00:47.163 に答える