code: def load_from_dict(self, data: dict, overwrite: bool=True):
          
          if data is None or data == {}:
              return False
          # Loop over items
          if isinstance(data, list) or isinstance(data, tuple):
              # Pick a random item from the tuple.
              if len(data[0]) != 2:
                  raise exc.LoaderException("Cannot load data with length {}".format(len(data[0])))
              items = data
          elif isinstance(data, dict) or isinstance(data, self.__class__):
              items = data.items()
          else:
              raise exc.LoaderException("Cannot load data of type {}".format(type(data)))
          for key, item in items:
              assert isinstance(key, str)
              if hasattr(self, key) and not overwrite:
                  # Refuse to overwrite existing data.
                  continue
              # Check name to verify it's safe.
              if self.safe_load:
                  if key.startswith("__") or key in ['dump', 'items', 'keys', 'values',
                                                     'iter_list', 'load_from_dict', 'iter_list_dump',
                                                     'parsed', 'safe_load']:
                      # It's evil!
                      key = "unsafe_" + key
              if '.' in key:
                  # Doubly evil!
                  key = key.replace('.', '_')
              if isinstance(item, dict):
                  # Create a new ConfigKey object with the dict.
                  ncfg = ConfigKey()
                  # Parse the data.
                  ncfg.load_from_dict(item)
                  # Set our new ConfigKey as an attribute of ourselves.
                  setattr(self, key, ncfg)
              elif isinstance(item, list):
                  # Iterate over the list, creating ConfigKey items as appropriate.
                  nlst = self.iter_list(item)
                  # Set our new list as an attribute of ourselves.
                  setattr(self, key, nlst)
              else:
                  # Set the item as an attribute of ourselves.
                  setattr(self, key, item)
          # Flip the parsed flag,
          self.parsed = True
docs: Loads key/values from dicts or list into the ConfigKey.
          :param data: The data object to load.
                          This can be a dict, or a list of key/value tuples.
          :param overwrite: Should the ConfigKey overwrite data already in it?