ファイル内の重複行削除(後優先)
Posted feedbacks - Python
とりあえず。
1 2 3 4 5 6 7 8 9 10 11 12 | import sys
l = []
for s in file(sys.argv[1], 'r') if len(sys.argv) > 1 else sys.stdin:
try:
l.remove(s)
except:
pass
l.append(s)
for s in l:
sys.stdout.write(s)
|
うわー、なるほど、試しに消してみるわけですね。 その発想はなかったです。 僕なら「前のを消す」じゃなくて「後ので上書き」ってやるかな。 辞書を使って。
1 2 3 4 5 6 7 8 | import sys
in_stream = file(sys.argv[1], 'r') if len(sys.argv) > 1 else sys.stdin
d = {}
for i, line in enumerate(in_stream):
d[line] = i
for line in sorted(d, key=d.__getitem__):
sys.stdout.write(line)
|




raynstard
#3422()
Rating1/1=1.00
入力されたテキストデータから重複する行をとりのぞいて、その結果を標準出力へ出力するプログラムを作成してください。
重複行の排除については、以下の仕様を満たしてください。
#4.はおまけですがある/なしで作りが変わってくると思われるので追加しました。
この問題はraynstardさんにご投稿いただきました。ご協力ありがとうございます。 ところで、素朴な実装のしかたをするとメモリ容量の数倍のサイズのすべての行が異なっているファイルを読ませたときに大変なことが起こりそうな気がしますが、そういうシビアなお題設定ではないので素朴に解いてしまって構いません。シビアなのは続編にしたいと思います。
[ reply ]