擅长:python、mysql、java
<p>您需要对这些值求和,然后将每个计数除以和:</p>
<pre><code>total = sum(x.values(), 0.0)
for key in x:
x[key] /= total
</code></pre>
<p>通过用<code>0.0</code>开始求和,我们确保<code>total</code>是一个浮点值,避免了使用整型操作数的<code>/</code>的Python 2 floor division行为。</p>
<p>演示:</p>
<pre><code>>>> from collections import Counter
>>> x = Counter(['abc','abc','def','jkl'])
>>> total = sum(x.values(), 0.0)
>>> for key in x:
... x[key] /= total
...
>>> x
Counter({'abc': 0.5, 'jkl': 0.25, 'def': 0.25})
>>> y = Counter(['abc','def','def','pqr', 'pr', 'foo', 'bar'])
>>> total = sum(y.values(), 0.0)
>>> for key in y:
... y[key] /= total
...
>>> y
Counter({'def': 0.2857142857142857, 'pr': 0.14285714285714285, 'abc': 0.14285714285714285, 'bar': 0.14285714285714285, 'pqr': 0.14285714285714285, 'foo': 0.14285714285714285})
</code></pre>
<p>如果需要对计数器求和,则需要分别重新规范化结果计数器;例如,对两个规范化计数器求和意味着您有一个新的计数器,整个值总和为2。</p>