code: def feature_list_to_dict(config: ModelConfigDict) -> ModelConfigDict:
      input_features_dict = {}
      for feature in config[INPUT_FEATURES]:
          input_features_dict[feature[NAME]] = feature
  
      output_features_dict = {}
      for feature in config[OUTPUT_FEATURES]:
          output_features_dict[feature[NAME]] = feature
  
      config = copy.copy(config)
      config[INPUT_FEATURES] = input_features_dict
      config[OUTPUT_FEATURES] = output_features_dict
      return config
  
imports: import copy
  import dataclasses
  import json
  import logging
  import os
  import warnings
  from typing import Any, Dict
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import AUTO, COMBINED, EXECUTOR, GOAL, GRID_SEARCH, HYPEROPT, INPUT_FEATURES, LOSS, MAX_CONCURRENT_TRIALS, METRIC, MINIMIZE, NAME, NUM_SAMPLES, OUTPUT_FEATURES, PARAMETERS, PREPROCESSING, RAY, SPACE, SPLIT, TYPE, VALIDATION
  from ludwig.globals import HYPEROPT_STATISTICS_FILE_NAME
  from ludwig.hyperopt.results import HyperoptResults, TrialResults
  from ludwig.types import HyperoptConfigDict, ModelConfigDict
  from ludwig.utils.data_utils import save_json
  from ludwig.utils.misc_utils import get_class_attributes, get_from_registry, merge_dict, set_default_value, set_default_values
  from ludwig.utils.print_utils import print_boxed
label_desc: Use image node_id 7 for calling a global function with example usage: feature_list_to_dict(config) and returns: config