【发布时间】:2012-06-01 18:47:24
【问题描述】:
我想知道你们是否对如何有效地执行此操作有任何意见,我目前有一个使用 Python 集合类的工作实现。
【问题讨论】:
标签: python sorting merge text-files
我想知道你们是否对如何有效地执行此操作有任何意见,我目前有一个使用 Python 集合类的工作实现。
【问题讨论】:
标签: python sorting merge text-files
这取决于你有多少可用内存(当然还有文件的大小)。
如果您有足够的可用内存,我个人会采取简单的方法并创建所有项目的列表并在它们上执行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)
lambda 的替代方案:
def key(x):
return int(x.split()[0])
【讨论】:
x并返回int(x.split()[0])的函数。
>>> 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]]
【讨论】: