Как удалить дубликат dict из списка в python

У меня есть список диктов, где иногда есть дубликаты диктовок. Например:

objList = 
[{
    'Name': 'plate',
    'StartTime': '2022-05-17T10:26:05.738101',

}, {
    'Name': 'bezel',
    'StartTime': '2022-05-17T10:26:09.922667',

}, {
    'Name': 'chrome',
    'StartTime': '2022-05-17T10:26:23.283304',

}, {
    'Name': 'plate placement',
    'StartTime': '2022-05-17T10:26:25.570845',

}, {
    'Name': 'plate placement',
    'StartTime': '2022-05-17T10:26:39.3390',
}]

В приведенных выше данных plate placement дублируется. Точно так же любой dict может быть продублирован, но я должен удалить любые повторяющиеся данные и просто сохранить один. Для этого я сначала подумал проверить, есть ли у нас в списке дубликаты диктов или нет:

obj_names = []
for obj in objList:
    obj_names.append(obj['Name'])

Теперь obj_names содержит ['plate', 'bezel', 'chrome', 'plate placement', 'plate placement']. Таким образом, мы знаем, какой dict дублируется. Теперь нам нужно удалить любое из его вхождений. Но я не уверен, как мы можем удалить это вхождение из списка. Кто-нибудь может предложить что-нибудь? Спасибо

@MechanicPig Не могли бы вы объяснить это в ответе?

S Andrew 17.05.2022 13:01
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
1
22
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вместо списка словарей вы можете использовать словарь словарей, используя имя в качестве ключа. Таким образом, если вы вставите новый объект с тем же именем, он заменит предыдущий объект.

Если вам нужно сохранить порядок, вы можете использовать OrderedDict.

Ответ принят как подходящий

Как сказал @mugiseyebrows, мы используем 'Name' каждого словаря (это утверждение не очень строгое) в качестве ключа и сам словарь в качестве значения для создания нового словаря, чтобы вы могли гарантировать, что словарь с тем же 'Name' появится один раз. , а затем используйте его values, чтобы создать новый список:

>>> new_dict = {dct['Name']: dct for dct in objList}
>>> new_list = list(new_dict.values())
>>> print('},\n'.join(str(new_list).split('},')))
[{'Name': 'plate', 'StartTime': '2022-05-17T10:26:05.738101'},
 {'Name': 'bezel', 'StartTime': '2022-05-17T10:26:09.922667'},
 {'Name': 'chrome', 'StartTime': '2022-05-17T10:26:23.283304'},
 {'Name': 'plate placement', 'StartTime': '2022-05-17T10:26:39.3390'}]

Другие вопросы по теме