Я бы хотел сгруппировать по значениям следующего словаря:
my_dict = {"Q1": {0: "no", 1: "yes"}, "Q2": {0: "no", 1: "yes"},
"Q3": {1: "animal", 2: "vehicle"}, Q4: {1: "animal", 2: "vehicle"}}
Результат должен выглядеть следующим образом:
result = {("Q1", "Q2"): {0: "no", 1: "yes"},
("Q3", "Q4"): {1: "animal", 2: "vehicle"}}
Я пробовал решения, перечисленные здесь: Группировка ключей словаря Python в виде списка и создание нового словаря с этим списком в качестве значения
Использование collection.defaultdict не работает, потому что в результате будет подразумеваться, что словари, которые я использую какключи для группировки в конечном итоге становятся ключами словаря результатов:
result = {{0: "no", 1: "yes"}: ["Q1", "Q2"] ,
{1: "animal", 2: "vehicle"}: ["Q3", "Q4"]}
Конечно, это не работает, потому что ключи словарей должны быть неизменяемыми.Поэтому я бы хотел что-то вроде frozendict, которого нет в стандартной библиотеке python.
Использование itertools.groupby также не работает, поскольку требует сортировки данных.Но operator.itemgetter не может сортировать словари.Там написано:
TypeError: '<' not supported between instances of 'dict' and 'dict'
Поэтому я хотел бы узнать Pythonic способ решения этой проблемы!Спасибо за вашу помощь:)