from typing import Dict
from typing import List


def set_user_defined_change_factors(
    sia: Dict[str, float], factors: List[float]
) -> Dict[str, float]:
    """Set the change factors for the user-defined calculations.

    :param sia: the similar item assessment dict.
    :param list factors: the list of change factors; the list items are float
        or int.
    :return: sia; the similar item assessment dict with updated factor values.
    :rtype: dict
    """
    # Get the change factor values.
    for _idx in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
        _key = list(sia.keys())[_idx]
        try:
            sia[_key] = factors[_idx - 1]
        except IndexError:
            sia[_key] = 0.0

    return sia