擅长:python、mysql、java
<pre class="lang-python prettyprint-override"><code>from collections import Counter
with open('data.txt') as infile:
# Counter will treat infile as an iterator and exhaust it
counter = Counter(infile)
# Don't know if you need sorting but this will sort in descending order
counts = ((line.strip(), n) for line, n in counter.most_common())
# Convert to proportional amounts
total = sum(counter.values())
probs = [(line, n / total) for line, n in counts]
print("\n".join("{}{}".format(*p) for p in probs))
</code></pre>
<p>这有几个优点。它迭代文件中的行而不是加载整个文件,它利用现有的<code>Counter</code>功能,它可以排序,并且清楚地知道发生了什么。在</p>