Чтобы найти подходящие списки, вы можете сделать что-то вроде этого:
prefs = {
's1': ["a", "b", "c", "d", "e"],
's2': ["c", "d", "e", "a", "b"],
's3': ["a", "b", "c", "d", "e"],
's4': ["c", "d", "e", "b", "e"],
's5': ["c", "d", "e", "b", "e"]
}
matches = {}
for key, value in prefs.items():
value = tuple(value)
if value not in matches:
matches[value] = []
matches[value].append(key)
print(matches)
Что печатает:
{('a', 'b', 'c', 'd', 'e'): ['s1', 's3'], ('c', 'd', 'e', 'b', 'e'): ['s5', 's4'], ('c', 'd', 'e', 'a', 'b'): ['s2']}
(Примечание: я добавил s5
к prefs
.)
Обновление
Если вы просто хотите сгруппировать ключи, вы можете получить к ним доступ через matches.values()
:
print(*matches.values())
Какие распечатки:
['s4', 's5'] ['s1', 's3'] ['s2']
Кроме того, вы можете сделать все это в одну строку, если хотите:
print({value: [key for key in prefs if tuple(prefs[key]) == value] for value in set(map(tuple, prefs.values()))})