def replaceValue(mapping, old, new, strategy=None):
    """
    Replace old values with new ones following dict strategy.

    The parameter strategy is None per default for inplace operation.
    A copy operation is injected via strateg values like copy.copy
    or copy.deepcopy

    Note: A dict is returned regardless of modifications.
    """
    anotherMap = strategy(mapping) if strategy else mapping
    if old in list(anotherMap.values()):
        for k in list(anotherMap.keys()):
            if anotherMap[k] == old:
                anotherMap[k] = new
    return anotherMap