code: def update(self, E=None, **F):
          
          if hasattr(E, 'keys'):
              self.extend(E)
          else:
              for key, value in E:
                  self._set_key(key, value)
          self.extend(F)
docs: D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
          If E present and has a .keys() method, does:     for k in E: D[k] = E[k]
          If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
          In either case, this is followed by: for k in F: D[k] = F[k]