<p><code>Counter</code>s<strong>是一种多集。从<a href="http://docs.python.org/2/library/collections.html#collections.Counter" rel="noreferrer">^{<cd2>} documentation</a>:</p>
<blockquote>
<p><strong>Several mathematical operations are provided for combining <code>Counter</code> objects to produce multisets</strong> (counters that have counts greater than zero). Addition and subtraction combine counters by adding or subtracting the counts of corresponding elements. Intersection and union return the minimum and maximum of corresponding counts. Each operation can accept inputs with signed counts, but the <strong>output will exclude results with counts of zero or less</strong>.</p>
</blockquote>
<p>强调我的。</p>
<p>更进一步,它告诉您有关<code>Counter</code>s的多集性质的更多细节:</p>
<blockquote>
<p><strong>Note</strong>: Counters were primarily designed to work with positive integers to represent running counts; however, care was taken to not unnecessarily preclude use cases needing other types or negative values. To help with those use cases, this section documents the minimum range and type restrictions.</p>
<p>[...]</p>
<ul>
<li>The multiset methods are designed only for use cases with positive values. The inputs may be negative or zero, but only outputs with positive values are created. There are no type restrictions, but the value type needs to support addition, subtraction, and comparison.</li>
</ul>
</blockquote>
<p>因此<code>Counter</code>对象是<strong>同时是</strong>;字典<em>和</em>包。然而,标准字典不支持加法,但是<code>Counter</code>s支持加法,因此<code>Counter</code>s并没有破坏字典在这里设置的优先级。</p>
<p>如果要保留零,请使用<code>Counter.update()</code>并传入另一个对象的<code>Counter.elements()</code>的结果:</p>
<pre><code>c.update(Counter('abba').elements())
</code></pre>
<p>演示:</p>
^{pr2}$