def _dictmerge(d1, d2):
    """ Recursive merges d2 into d1 if they are dictionaries (by keys), otherwise returns d2 """
    if isinstance(d1, dict) and isinstance(d2, dict):
        rd = d1
        for k in d2:
            if k in d1:
                rd[k] = _dictmerge(d1[k], d2[k])
            else:
                rd[k] = d2[k]
        return rd
    return d2