擅长:python、mysql、java
<p>您必须按如下方式在两个计数器中添加每个元素,因为原始计数器存储的是字符串而不是值的数字(注意<code>float()</code>转换):</p>
<pre><code>r = Counter(c)
for k, v in d.items():
r[k] += float(v)
</code></pre>
<p>现在添加的值位于<code>r</code>。更简单的方法是在创建<code>c</code>和<code>d</code>时直接执行转换:</p>
<pre><code>c = Counter((p[0], float(p[1])) for p in map(lambda s: s.split(), inp))
d = Counter((p[0], float(p[1])) for p in map(lambda s: s.split(), inp2))
</code></pre>
<p>现在它将按预期工作:</p>
<pre><code>c + d
> Counter({'gln': 4.21, 'asp': 2.87, 'his': 1.12, 'arg': 1.07})
</code></pre>
<p>还要注意,读取文件的方式并不是最安全的:打开但从不关闭文件,更好的方法是使用<code>with open</code>,如下所示:</p>
<pre><code>inp = []
with open('c:/users/ansm/desktop/xx.txt', 'r') as input:
for line in input:
inp.append(line.strip())
</code></pre>