update() method will *recursively* update nested dict:

            >>> d=Dict({'a':{'b':{'c':3,'d':4},'h':4}})
            >>> d.update({'a':{'b':{'c':'888'}}})
            >>> d
            {'a': {'b': {'c': '888', 'd': 4}, 'h': 4}}

            please use update_dict() if you do not want this behaviour

def update(self, *args, **kwargs):
        """ update() method will *recursively* update nested dict:

            >>> d=Dict({'a':{'b':{'c':3,'d':4},'h':4}})
            >>> d.update({'a':{'b':{'c':'888'}}})
            >>> d
            {'a': {'b': {'c': '888', 'd': 4}, 'h': 4}}

            please use update_dict() if you do not want this behaviour
        """
        for arg in args:
            if not arg:
                continue
            elif isinstance(arg, dict):
                for k, v in arg.items():
                    self._update_kv(k, v)
            elif isinstance(arg, (list, tuple)) and (not isinstance(arg[0], (list, tuple))):
                k = arg[0]
                v = arg[1]
                self._update_kv(k, v)
            elif isinstance(arg, (list, tuple)) or isgenerator(arg):
                for k, v in arg:
                    self._update_kv(k, v)
            else:
                raise TypeError("update does not understand "
                                "{0} types".format(type(arg)))

        for k, v in kwargs.items():
            self._update_kv(k, v)