擅长:python、mysql、java
<p>发布的代码有许多问题。列表理解中不允许使用while循环。<em>defaultdict</em>的参数应该是<em>list</em>而不是<em>line</em>。以下是代码的修复版本:</p>
<pre><code>from collections import defaultdict
D = defaultdict(list)
for line in open('filename', 'r'):
k = line.split()[-1]
D[k].append(line)
print 'VALUE NO TIMES REPEATED'
print ' - -'
for value, lines in D.items():
print '%-6s %d' % (value, len(lines))
</code></pre>
<p>另一种方法是使用<a href="http://docs.python.org/library/collections.html#collections.Counter" rel="nofollow">collections.Counter</a>方便地求出重复次数的总和。这样可以简化代码:</p>
^{pr2}$