У меня есть список, включающий словари (List[Dict, Dict, ...]
), я хотел бы унифицировать список на основе двух ключей, но я хочу сохранить значение другого ключа в словаре, чтобы не потерять его сделать список в ключе, который я хочу сохранить. Я использую Python для кода. Если это имеет какое-либо значение Python 3.x, если быть точным.
Предположим, у меня есть следующий список словарей с тремя ключами: number
, favorite
и color
. Я хочу унифицировать элементы списка, используя клавиши number
и favorite
. Однако для словарей с одинаковыми значениями number
и favorite
я бы хотел добавить список под ключом color
, чтобы убедиться, что у меня есть все color
s для одной и той же комбинации number
и favorite
. Этот список также должен быть уникальным, поскольку он не должен повторяться color
s для той же комбинации. Однако, если в конечном результате есть только один элемент для цвета ключа, это должна быть строка, а не список.
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
, это строка, а не список.