Python remove o valor duplicado na lista de um dicionário combinado

Eu preciso de um pouco de ajuda de lição de casa. Eu tenho que escrever uma função que combina vários dicionários em novo dicionário. Se uma chave aparecer mais de uma vez; os valores correspondentes a essa chave no novo dicionário devem ser uma lista exclusiva. Como exemplo, é o que tenho até agora:

f = {'a': 'apple', 'c': 'cat', 'b': 'bat', 'd': 'dog'}
g =  {'c': 'car', 'b': 'bat', 'e': 'elephant'}
h = {'b': 'boy', 'd': 'deer'}
r = {'a': 'adam'}

def merge(*d):
    newdicts={}
    for dict in d:
        for k in dict.items():
            if k[0] in newdicts:
                newdicts[k[0]].append(k[1])
            else:
                newdicts[k[0]]=[k[1]]
    return newdicts

combined = merge(f, g, h, r)
print(combined)

A saída é semelhante a:

{'a': ['apple', 'adam'], 'c': ['gato', 'carro'], 'b': ['morcego', 'morcego', 'menino'], 'e' : ['elephant'], 'd': ['dog', 'deer']}

Sob a tecla 'b', 'bat' aparece duas vezes. Como faço para remover as duplicatas?

Eu olhei sob o filtro, lambda, mas eu não conseguia descobrir como usar com (talvez b / c é uma lista em um dicionário?)

Qualquer ajuda seria apreciada. E agradeço antecipadamente por toda sua ajuda!