Тернарное выражение в словарном понимании

Я пытаюсь инвертировать словарь. В случае если многие ключи имеют одно и то же значение, новый ключ (старое значение) должен ассоциироваться с набором новых значений (старые ключи). Я решил проблему, но яЯ пытаюсь провести рефакторинг с использованием словарного понимания и некоторых вспомогательных методов.

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

Однако это вызывает синтаксическую ошибку

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

Надеюсь, что выравнивание в этом коде работает правильно. Следует указать на второй:, вelse пункт. Любая идея, чтоздесь? Я'Мы пробовали столько форм скобок, сколько я могу себе представить.

Ответы на вопрос(2)

Ваш ответ на вопрос