Вы можете просто создать произвольно упорядоченный список ваших элементов, а затем объединить их как ключ-значение
С одной стороны вы возьмете список, с другой стороны тот же список, повернутый от элемента values[1:] + [values[0]]
, и вы объединяете обе пары в пары 2 на 2 и строите словарь из этих пар
values = ["dog", "cat", "rat", "bird", "monkey"]
shuffle(values)
result = dict(zip(values, values[1:] + [values[0]]))
Пример
перемешивание дает ['bird', 'dog', 'rat', 'monkey', 'cat']
вращение дает ['dog', 'rat', 'monkey', 'cat', 'bird']
сжатие дает [('bird', 'dog'), ('dog', 'rat'), ('rat', 'monkey'), ('monkey', 'cat'), ('cat', 'bird')]
затем каждая пара становится сопоставлением
print(values) # ['bird', 'dog', 'rat', 'monkey', 'cat']
print(result) # {'bird': 'dog', 'dog': 'rat', 'rat': 'monkey', 'monkey': 'cat', 'cat': 'bird'}
Если вы не следуете за сопоставлением, просто shuffle
второй раз
mappings = list(zip(values, values[1:] + [values[0]]))
shuffle(mappings)
result = dict(mappings)