def recursive_del(d, keep):
    for k in d.copy():
        if type(d[k]) == dict:
            recursive_del(d[k], keep)
if len(d[k]) == 0:
    del d[k]
elif k not in keep:
    del d[k]
Рекурсивная модификация словаря в python