У меня есть список словарей вроде такого:
[
{'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'}]
Комментариев нет:
Отправить комментарий