'Like dict.update() but add counts instead of replacing them.
Source can be an iterable, a dictionary, or another Counter instance.
>>> c = Counter(\'which\')
>>> c.update(\'witch\')           # add elements from another iterable
>>> d = Counter(\'watch\')
>>> c.update(d)                 # add elements from another counter
>>> c[\'h\']                      # four \'h\' in which, witch, and watch
4'

def update(*args, **kwds):

    if (not args):
        raise TypeError("descriptor    'update'    of    'Counter'    object    needs    an    argument")
    self = args[0]
    args = args[1:]
    if (len(args) > 1):
        raise TypeError(('expected    at    most    1    arguments,    got    %d' % len(args)))
    iterable = (args[0] if args else None)
    if (iterable is not None):
        if isinstance(iterable, Mapping):
            if self:
                self_get = self.get
                for (elem, count) in iterable.iteritems():
                    self[elem] = (self_get(elem, 0) + count)
            else:
                super(Counter, self).update(iterable)
        else:
            self_get = self.get
            for elem in iterable:
                self[elem] = (self_get(elem, 0) + 1)
    if kwds:
        self.update(kwds)
