<p>试试这个:</p>
<pre><code>from collections import Counter
def wordLengthStats(filename):
counts=Counter(i.strip() for i in open(filename).readlines())
for (k,v) in sorted(counts.items(),key=lambda x: x[-1],reverse=True):
print("{}|{}".format(k.zfill(2),'#'*v))
</code></pre>
<p><code>Counter</code>函数将创建一个字典,其中包含<code>filename</code>中所有行的频率。你知道吗</p>
<p><code>sorted(counts.items(),key=lambda x: x[-1],reverse=True)</code>表示按<code>counts.items()</code>中的最后一个位置(<code>x[-1]</code>)按降序(<code>reverse=True</code>)对项目排序,这就是频率。你知道吗</p>
<p>最后,<code>.zfill</code>string方法为<code>print</code>语句用前导零填充<code>k</code>。你知道吗</p>
<p><strong>示例:</strong></p>
<hr/>
<p>“假文件”假.txt':</p>
<blockquote>
<p>3 <br/>
3<br/>
3<br/>
3<br/>
3<br/>
4<br/>
4<br/>
5<br/>
8<br/>
10<br/></p>
</blockquote>
<hr/>
<pre><code>>>> wordLengthStats('fake.txt')
03|#####
04|##
05|#
08|#
10|#
</code></pre>
<p>在这个例子中<code>counts</code>看起来像:</p>
<pre><code>{'3': 5, '4': 2, '5': 1, '8': 1, '10': 1}
</code></pre>
<p>和<code>sorted(counts.items(),key=lambda x: x[-1],reverse=True)</code>看起来像(注意最常见的项目是第一个):</p>
<pre><code>[('3', 5), ('4', 2), ('5', 1), ('8', 1), ('10', 1)]
</code></pre>
<p>如果您不想按频率排序,而是按键排序,那么请执行<code>sorted(counts.items())</code></p>