Удаление дубликатов из списка pydantic объектовPython

Программы на Python
Ответить
Anonymous
 Удаление дубликатов из списка pydantic объектов

Сообщение Anonymous »

Я пытался удалить дубликаты из списка pydantic объектов, но столкнулся с проблемой, которую не смог решить. Единственный рабочий метод очень медленный.
Есть ли более быстрый способ удалить дубликаты, чем мой метод?
Код:
Пидантическая модель (a.py)
from pydantic import BaseModel

class Photo(BaseModel):
title: str
url: str

Основной файл (b.py)
from collections import OrderedDict
from a import Photo

# 3 objects, 2 duplicates
a_obj = {
'title': 'SOME TITLE v1',
'url': 'http://some.url'
}
b_obj = {
'title': 'SOME TITLE v2',
'url': 'http://different.url'
}
c_obj = {
'title': 'SOME TITLE v1',
'url': 'http://some.url'
}

# Creating list of pydantic objects
pd_obj_list = list()
pd_obj_list += [Photo(**a_obj)]
pd_obj_list += [Photo(**b_obj)]
pd_obj_list += [Photo(**c_obj)]

# My Attempts to Remove Duplicates

# Using OrderedDict.fromkeys
final_list_0 = list(OrderedDict.fromkeys(pd_obj_list))
# returns TypeError: unhashable type: 'Photo'

# Using Set
final_list_1 = list(set(pd_obj_list))
# returns TypeError: unhashable type: 'Photo'

# Using enumerate
final_list_2 = [i for n, i in enumerate(pd_obj_list) if i not in pd_obj_list[:n]]
# It works but too slow when I have ~10k objects in the list


Подробнее здесь: https://stackoverflow.com/questions/697 ... ic-objects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»