def validate_input(user_input, input_map):
    """ Checks user_input for validity and appends any validation errors to
    return data.

    Input:
        - user_input: Dictionary containing the following input keys: values
            - amount: float
            - prefix: string
            - type: string
            - base: string
        - input_map: Dictionary containing the following valid keys: values
            prefix:
                - valid_prefix_key: string
            type: 
                - valid_type_key: string
            base:
                - valid_base_key: string

    Output: Validated user_input dictionary with errors list as key errors
    """
    # Split out user_input keys
    amt_value = user_input['amount']
    amt_prefix = user_input['prefix'].lower()
    amt_type = user_input['type'].lower()
    amt_base = user_input['base'].lower()

    # Set up error list to track any input issues
    errors = []

    # Convert input amount from string to float for use in calculations
    try:
        amt_value = float(amt_value)
    except ValueError:
        # Append error string to errors list in user_input
        err_str = "'{}' is not a valid value for amount, use numbers only.".format(amt_value)
        errors.append(err_str)

    # Check user input against valid value lists
    valid_prefix = True if amt_prefix in input_map['prefix'] else False
    valid_type = True if amt_type in input_map['type'] else False
    valid_base = True if amt_base in input_map['base'] else False

    if not valid_prefix:
        # Append error string to errors list in user_input
        err_str = "'{}' is not a valid prefix: ({})".format(
            amt_prefix,
            ', '.join(input_map['prefix']))
        errors.append(err_str)

    if not valid_type:
        # Append error string to errors list in user_input
        err_str = "'{}' is not a valid type: ({})".format(
            amt_type,
            ', '.join(input_map['type']))
        errors.append(err_str)

    if not valid_base:
        # Append error string to errors list in user_input
        err_str = "'{}' is not a valid base: ({})".format(
            amt_base,
            ', '.join(input_map['base']))
        errors.append(err_str)

    validated_input = {
        'amount': amt_value,
        'prefix': amt_prefix,
        'type': amt_type,
        'base': amt_base,
        'errors': errors
    }

    return validated_input