これを効率的に行う方法について、皆さんから何か意見があったかと思いました。現在、Pythonのコレクションクラスを使用した実装が機能しています。
質問する
561 次
2 に答える
2
それはあなたが利用できるメモリの量(そしてもちろんファイルのサイズ)に依存します。
私が個人的に利用できるよりも十分なメモリがある場合は、簡単な方法ですべてのアイテムのリストを作成し、sort()
それらに対して実行します。
このようなもの:
# Read all except the first (header) lines
lines = file('1.txt').readlines()[1:]
lines += file('2.txt').readlines()[1:]
lines.sort(key=lambda x: int(x.split()[0]))
print ''.join(lines)
ラムダの代替:
def key(x):
return int(x.split()[0])
于 2012-05-26T14:33:28.370 に答える
1
>>> from itertools import islice
>>> from operator import itemgetter
>>> files = ('1.txt','2.txt')
>>> lines = (map(int,line.split()) for f in files
for line in islice(open(f),1,None))
>>> sorted(lines,key=itemgetter(0))
[[1, 23112, 3], [2, 32344, 1], [12, 19872, 0], [123, 12243, 1], [221, 39873, 5], [234, 34555, -4]]
于 2012-05-26T14:42:44.717 に答える