Страницы

Поиск по вопросам

понедельник, 29 октября 2018 г.

Как удалить из списка словари с повторяющимся полем?

У меня есть список словарей вроде такого:
[ {'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}, {'id': 1, 'name': 'one'}, {'id': 3, 'name': 'three'} ]
Я хочу, чтобы остался список с уникальными id (неважно, что в остальных полях словаря). То есть, из примера выше должно получиться это:
[ {'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}, {'id': 3, 'name': 'three'} ]


Ответ

Чтобы оставить в списке только словари с уникальным id (убрать повторения):
result = list({d['id']: d for d in list_of_dicts}.values())
Это линейный по времени и по памяти алгоритм.
Результат:
[{'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}, {'id': 3, 'name': 'three'}]

Комментариев нет:

Отправить комментарий