code: def apply_to_type(input_, input_type, func):
      
      if isinstance(input_, input_type):
          return func(input_)
      elif isinstance(input_, string_classes):
          return input_
      elif isinstance(input_, collections.Mapping):
          return {k: apply_to_type(sample, input_type, func) for k, sample in input_.items()}
      elif isinstance(input_, collections.Sequence):
          return [apply_to_type(sample, input_type, func) for sample in input_]
      else:
          raise TypeError(("input must contain {}, dicts or lists; found {}"
                           .format(input_type, type(input_))))
docs: Apply a function on a object of `input_type` or mapping, or sequence of objects of `input_type`.