擅长:python、mysql、java
<p>不必从<code>rows</code>写入max项,您可以按第三个值按降序对行进行排序,按第三个值对行进行分组,然后将项写入第一个组:</p>
<pre><code>import csv
from itertools import groupby
from operator import itemgetter
with open('input.txt','rb') as f_in, open('out.txt','wb') as f_out:
reader = csv.reader(f_in, delimiter='\t')
writer1 = csv.writer(f_out, delimiter='\t')
for group, rows in groupby(filter(lambda x: x[0]!=x[1], reader), key=itemgetter(0)):
rows = sorted(rows, key=lambda r: (float(r[2])), reverse=True)
_, best = next(groupby(rows, key=itemgetter(2)))
writer1.writerows(best)
</code></pre>
<p>输出在<code>out.txt</code>:</p>
<pre><code>a b 77.8
a d 77.8
e f 56.7
</code></pre>