code: def _initial_key(self):
          
          key = []
          undefined = []
          stream_params = set(util.stream_parameters(self.streams))
          for kdim in self.kdims:
              if str(kdim) in stream_params:
                  key.append(None)
              elif kdim.default:
                  key.append(kdim.default)
              elif kdim.values:
                  if all(util.isnumeric(v) for v in kdim.values):
                      key.append(sorted(kdim.values)[0])
                  else:
                      key.append(kdim.values[0])
              elif kdim.range[0] is not None:
                  key.append(kdim.range[0])
              else:
                  undefined.append(kdim)
          if undefined:
              msg = ('Dimension(s) {undefined_dims} do not specify range or values needed '
                     'to generate initial key')
              undefined_dims = ', '.join(['%r' % str(dim) for dim in undefined])
              raise KeyError(msg.format(undefined_dims=undefined_dims))
  
          return tuple(key)
docs: Construct an initial key for based on the lower range bounds or
          values on the key dimensions.