def combine_dict_in_list(d1_, d2_):
    """
    Merges two dictionaries, non-destructively, combining values on duplicate keys in a list

    >>> d1 = {'a': 'test', 'b': 'btest', 'd': 'dreg'}
    >>> d2 = {'a': ['cool', 'test'], 'b': 'main', 'c': 'clear'}
    >>> combine_dict_in_list(d1,d2)
    {'c': ['clear'], 'a': ['cool', 'test', 'test'], 'b': ['btest', 'main'], 'd': ['dreg']}

    :param d1_: dictionary
    :param d2_: dictionary
    :return: dictionary
    """
    d = {}
    for key in set(list(d1_.keys()) + list(d2_.keys())):
        try:
            if isinstance(d1_[key], list):
                d.setdefault(key, []).extend(d1_[key])
            else:
                d.setdefault(key, []).append(d1_[key])

        except KeyError:
            pass

        try:
            if isinstance(d2_[key], list):
                d.setdefault(key, []).extend(d2_[key])
            else:
                d.setdefault(key, []).append(d2_[key])
        except KeyError:
            pass

    return d