Я борюсь за функцию, которая принимает перестановку (отображение из набора элементов на себя, так что никакие два элемента не отображаются на одно и то же значение; набор значений совпадает с набором ключей), представленное каксловарь и возвращает замкнутую перестановку (где перестановка отображает все элементы в подмножестве на элементы в подмножестве). У меня есть только маленький кусочек кода;
def close_permutation(dictionary):
# every element must belong to exactly 1 closed set
closed = {}
if set(a_dict.keys()) == set(a_dict.values()):
# check if dictionary is a permutation
# i.e. set of values is same as set of keys
Например, для аргумента.
{'alice' : 'carol', 'bob' : 'bob', 'carol' : 'eve',
'dave' : 'dave', 'eve' : 'alice'}
Хочу результат
{'alice' : 'bob', 'bob' : 'carol', 'carol' : 'dave',
'dave' : 'eve', 'eve' : 'alice'}