你这个 Python Code 太弱了。
Python 就是要把循环部分放到 C 里面实现。
Python 的强项是有很多 library 要好好利用。
就是 几百 M 的文件一次读进来处理更快。
尽可能避免用 Python code 来做 Loop.
试试这个会不会好些。至少代码量会短很多吧。
这个假设输入文件每行都有至少 10 个 column。
import sys
import re
data = sys.stdin.read()
lines = re.findall(r'(?m)^((?:[^\t]*\t){9,9})([^\t]*)(.*)', data)
valmap = {}
output = [ head + valmap.setdefault(mid, str(len(valmap)+1)) + tail + '\n'
for head,mid,tail in lines]
sys.stdout.write(''.join(output))