def dict_merge2(*dicts):
    """ Return a dict with all values of dicts.
        If some key appears twice and contains iterable objects, the values
        are merged (instead of overwritten).
    """
    res = {}
    for d in dicts:
        for k in d.keys():
            if k in res and isinstance(res[k], (list, tuple)):
                res[k] = res[k] + d[k]
            elif k in res and isinstance(res[k], dict):
                res[k].update(d[k])
            else:
                res[k] = d[k]
    return res