擅长:python、mysql、java
<blockquote>
<p>Now what I wanted to do is read the last column and iterate the values for repetitions and generate an output file containing two column 'VALUE' & 'NO OF TIMES REPEATED'. </p>
</blockquote>
<p>所以使用<code>collections.Counter</code>来计算每个值出现的次数,而不是<code>defaultdict</code>。(根本不清楚您要用<code>defaultdict</code>做什么,而且您的初始化也不会起作用;<code>defaultdict</code>是用一个将创建默认值的可调用函数构造的。在您的例子中,您显然想到的默认值是一个空列表,因此您将使用<code>list</code>来初始化{<cd2>}),您不需要存储行来计数它们。<code>Counter</code>会自动为您计数。在</p>
<p>另外,提前处理整个文件有点难看,因为您可以直接遍历文件并获取行,这将为您完成部分处理。虽然您实际上可以在<code>Counter</code>创建中自动执行该迭代。在</p>
<p>这里有一个完整的解决方案:</p>
<pre><code>from collections import Counter
with open('input', 'r') as data:
histogram = Counter(line.split('\t')[-1].strip() for line in data)
with open('output', 'w') as result:
for item in histogram.iteritems():
result.write('%s\t%s\n' % item)
</code></pre>