Expresión ternaria en la comprensión del diccionario.

Estoy tratando de invertir un diccionario. En el caso de que muchas claves tengan el mismo valor, la nueva clave (valor antiguo) debe asociarse con un conjunto de los nuevos valores (claves antiguas). Resolví el problema, pero estoy tratando de refactorizar utilizando la comprensión del diccionario y algunos métodos de ayuda.

def has_unique_value(k):
    return d.values().count(d[k]) == 1

def keys_with_same_value_as_key(k):
    return set([key for key in d.keys() if d[key] == d[k]])

print( {d[k]:k if has_unique_value(k) else d[k]:keys_with_same_value_as_key(k) for k in d.keys()} )

Sin embargo, esto genera un error de sintaxis.

print( {d[k]:k if has_unique_value(k) else d[k]:keys_with_same_value_as_key(k) for k in d} )
                                               ^
SyntaxError: invalid syntax

Esperemos que la alineación en ese código funcione bien. Debería apuntar a la segunda.:, en elelse cláusula. ¿Alguna idea de que hay aquí? He intentado tantas formas de paréntesis como puedo concebir.

Respuestas a la pregunta(2)

Su respuesta a la pregunta