Тернарное выражение в словарном понимании
Я пытаюсь инвертировать словарь. В случае если многие ключи имеют одно и то же значение, новый ключ (старое значение) должен ассоциироваться с набором новых значений (старые ключи). Я решил проблему, но я пытаюсь провести рефакторинг с использованием словарного понимания и некоторых вспомогательных методов.
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
пункт. Есть идеи, что здесь? Я пробовал столько форм скобок, сколько я могу себе представить.