Python elimina el valor duplicado en la lista de un diccionario combinado

Necesito un poco de ayuda con la tarea. Tengo que escribir una función que combine varios diccionarios en un nuevo diccionario. Si aparece una tecla más de una vez; Los valores correspondientes a esa clave en el nuevo diccionario deben ser una lista única. Como ejemplo, esto es lo que tengo hasta ahora:

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)

La salida se ve como:

{'a': ['apple', 'adam'], 'c': ['cat', 'car'], 'b': ['bat', 'bat', 'boy'], 'e' : ['elefante'], 'd': ['perro', 'venado']}

Bajo la tecla 'b', aparece 'bat' dos veces. ¿Cómo elimino los duplicados?

He buscado debajo del filtro, lambda, pero no pude averiguar cómo usar con (¿quizás b / c es una lista en un diccionario?)

Cualquier ayuda sería apreciada. Y gracias de antemano por toda su ayuda!

Respuestas a la pregunta(4)

Su respuesta a la pregunta