Python:强制heapq.merge在比较期间将字符串作为整数进行交互

时间:2015-05-09 21:31:46

标签: python sorting casting merge

我试图合并一组预先排序的文件,其中每个文件中的每一行都是一个整数:

for line in heapq.merge(*files):

排序成功完成,但是对文件内容进行了比较,而不是整数。如何强制进行整数比较?

1 个答案:

答案 0 :(得分:1)

试试这个:

for line in heapq.merge(*(map(int, file) for file in files)):

在比较期间,它不会将字符串解释为整数,但实际上它们会立即将更改整数。因此结果是整数,而不是字符串。当然,如果需要,可以将其转换回字符串:

for line in map(str, heapq.merge(*(map(int, file) for file in files))):

对于其他人/将来的参考:这是针对Python 3的,其中map返回一个迭代器。在Python 2中,map需要替换为itertools.imap,以便在启动时不会将所有内容都读入内存。