为什么collections.Counter不会覆盖__iadd__方法?

时间:2013-10-04 09:39:04

标签: python counter

似乎经常使用将几个Counter合并在一起的情况无法在没有太多额外工作的情况下使用内置操作执行。

1 个答案:

答案 0 :(得分:3)

您可以使用collections.Counter.update

>>> c = Counter('aaab')
>>> c.update(Counter('babac'))
>>> c
Counter({'a': 5, 'b': 3, 'c': 1})

在Python 3.3中,__iadd__被覆盖:(http://hg.python.org/cpython/rev/5cced40374df

>>> sys.version
'3.3.0 (default, Sep 29 2012, 17:14:58) \n[GCC 4.7.2]'
>>> print(Counter.__iadd__.__doc__)
Inplace add from another counter, keeping only positive counts.

        >>> c = Counter('abbb')
        >>> c += Counter('bcc')
        >>> c
        Counter({'b': 4, 'c': 2, 'a': 1})