У меня есть список, который включает словари (List[Dict, Dict,...]), я хотел бы унифицировать список на основе двух ключей, но я хочу сохранить значение другого ключа в словаре, чтобы убедиться, что я делаю не потерять его, составив список в ключе, который я хочу сохранить. Я использую Python для кода. Если это имеет какое-либо значение Python 3.x, чтобы быть точным.
Предположим, у меня есть следующий список словарей с тремя ключами: number, favorite и color. Я хочу унифицировать элементы списка, используя number ключа и favorite. Однако для словарей с одинаковыми значениями number и favorite, я бы хотел добавить список под ключевым color чтобы убедиться, что у меня есть все color для одинаковой комбинации number и favorite. Этот список также должен быть уникальным, поскольку он не должен нуждаться в повторном color для той же комбинации. Однако, если в конечном результате есть только один элемент для цвета ключа, это должна быть строка, а не список.
lst = [
{'number': 1, 'favorite': False, 'color': 'red'},
{'number': 1, 'favorite': False, 'color': 'green'},
{'number': 1, 'favorite': False, 'color': 'red'},
{'number': 1, 'favorite': True, 'color': 'red'},
{'number': 2, 'favorite': False, 'color': 'red'}]
Используя вышеупомянутый uniqify, я получил бы следующий результат:
lst = [
{'number': 1, 'favorite': False, 'color': {'red', 'green'}},
{'number': 1, 'favorite': True, 'color': 'red'},
{'number': 2, 'favorite': False, 'color': 'red'},
]
Обратите внимание, что существует только один экземпляр red где number равно 1 а favorite - False даже если оно появилось дважды в списке до того, как оно было отменено. Также обратите внимание, что когда во втором dict есть только один элемент для color ключа, это строка, а не список.