def METHOD_NAME(batch: Any, key: Any, value: Any) -> Any:
    """Sets multiple key value pairs in a non-tuple batch."""
    # Numpy arrays and Torch tensors can take tuples and lists as keys, so try to do a normal
    # __getitem__ call before resulting to list comprehension.
    try:
        # Check if one can do a __getitem__ before doing a __setitem__ because dicts can
        # do __setitem__ for elements not in the dict and we do not want that.
        batch[key]
        batch[key] = value
        return batch
    # Indexing a list with a sequence results in TypeError
    # Indexing an array/tensor with a sequence that is longer than the rank of the array
    # results in an IndexError.
    except (IndexError, TypeError, KeyError):
        pass
    if not hasattr(value, '__len__') or isinstance(value, str):
        raise ValueError(f'value must be a sequence or array or tensor! and not {type(value)}')
    if len(key) != len(value):
        raise ValueError(f'value must be the same length as key ({len(key)}), but it is {len(value)} instead')
    for single_key, single_value in zip(key, value):
        batch = _batch_set(batch, single_key, single_value)
    return batch