Эффективная обработка повторяющихся объектов с помощью Python
В Python может возникнуть необходимость удалить повторяющиеся объекты из списка, сохраняя исходный порядок. Эта проблема возникает, когда у вас есть список пользовательских объектов и вы хотите фильтровать дубликаты на основе определенных критериев или проверять наличие дубликатов в базе данных.
Что касается ваших конкретных требований, вам необходимо определить уникальность ваших объектов для эффективного использования. метод set(list_of_objects). Это предполагает создание хэшируемых объектов путем реализации методов eq и hash.
Метод eq определяет равенство объектов. Например, если у вас есть объекты Book с атрибутамиauthor_name и title, где комбинация автора и заголовка уникальна, метод eq может выглядеть следующим образом:
def __eq__(self, other):
return self.author_name == other.author_name and self.title == other.title
Аналогично, метод hash генерирует хэш-значение для объекта. Распространенный подход — хешировать кортеж ключевых атрибутов:
def __hash__(self):
return hash(('title', self.title, 'author_name', self.author_name))
С помощью этих методов теперь вы можете удалять дубликаты из списка объектов книги:
books = [Book('title1', 'author1'), Book('title2', 'author2'), Book('title1', 'author1')]
unique_books = list(set(books))
Кроме того, для проверки дубликатов в базе данных можно использовать следующий подход:
import sqlalchemy
session = sqlalchemy.orm.sessionmaker()()
records = session.query(YourModel).all()
existing_titles = set([record.title for record in records])
unique_objects = [obj for obj in objects if obj.title not in existing_titles]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3