class_docstr: Special dictionary object that can handle dict operations based on dataset name, wavelength, or DataID.
  
  Note: Internal dictionary keys are `DataID` objects.
class_docstr_tok: ["Special","dictionary","object","that","can","handle","dict","operations","based","on","dataset","name",",","wavelength",",","or","DataID",".","Note",":","Internal","dictionary","keys","are","`","DataID","`","objects","."]
docstr: Create a DataID key from dictionary.
docstr_tok: ["Create","a","DataID","key","from","dictionary","."]
code: def _create_dataid_key(self, key, value_info):
      """Create a DataID key from dictionary."""
      if not isinstance(value_info, dict):
          raise ValueError(
              "Key must be a DataID when value is not an xarray DataArray or dict"
          )
      old_key = key
      try:
          key = self.get_key(key)
      except KeyError:
          if isinstance(old_key, str):
              new_name = old_key
          else:
              new_name = value_info.get("name")
          # this is a new key and it's not a full DataID tuple
          if new_name is None and value_info.get("wavelength") is None:
              raise ValueError(
                  "One of 'name' or 'wavelength' attrs "
                  "values should be set."
              )
          id_keys = self._create_id_keys_from_dict(value_info)
          value_info["name"] = new_name
          key = DataID(id_keys, **value_info)
      return key
  
file_path: satpy/satpy/dataset/data_dict.py
imports: import numpy
  from .dataid import DataID, create_filtered_query, minimal_default_keys_config
label_desc: Use image node_id 7 for calling the DatasetDict obj's underlying member method code with example usage: obj._create_dataid_key(key, value_info) and returns: key