Expressão ternária na compreensão de dicionários

Estou tentando inverter um dicionário. No caso de muitas chaves com o mesmo valor, a nova chave (valor antigo) deve ser associada a um conjunto de novos valores (chaves antigas). Resolvi o problema, mas estou tentando refatorar usando compreensão de dicionário e alguns métodos auxiliares.

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()} )

No entanto, isso gera um erro de sintaxe

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

Espero que o alinhamento nesse código funcione corretamente. Deve apontar para o segundo:, noelse cláusula. Alguma idéia do que há aqui em cima? Eu tentei tantas formas de parênteses quanto posso conceber.

questionAnswers(2)

yourAnswerToTheQuestion