У меня есть список, который включает словари (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
ключа, это строка, а не список.