Maison > base de données > tutoriel mysql > le corps du texte

Comment supprimer efficacement les objets en double d'une liste Python tout en préservant l'ordre ?

Barbara Streisand
Libérer: 2024-10-27 00:22:30
original
338 Les gens l'ont consulté

How Do I Efficiently Remove Duplicate Objects from a Python List While Preserving Order?

Gérer efficacement les objets en double avec Python

En Python, il peut être nécessaire de supprimer les objets en double d'une liste tout en conservant l'ordre d'origine. Ce problème survient lorsque vous disposez d'une liste d'objets personnalisés et que vous souhaitez filtrer les doublons en fonction de certains critères ou rechercher les doublons dans une base de données.

En ce qui concerne vos besoins spécifiques, vous devez définir le caractère unique de vos objets pour pouvoir les utiliser efficacement. la méthode set(list_of_objects). Cela implique de rendre vos objets hachables en implémentant les méthodes eq et hash.

La méthode eq définit l'égalité des objets. Par exemple, si vous avez des objets Book avec les attributs author_name et title, où la combinaison de l'auteur et du titre est unique, la méthode eq pourrait ressembler à ceci :

<code class="python">def __eq__(self, other):
    return self.author_name == other.author_name and self.title == other.title</code>
Copier après la connexion

De même, la méthode La méthode hash génère une valeur de hachage pour l'objet. Une approche courante consiste à hacher un tuple d'attributs clés :

<code class="python">def __hash__(self):
    return hash(('title', self.title, 'author_name', self.author_name))</code>
Copier après la connexion

Avec ces méthodes en place, vous pouvez désormais supprimer les doublons d'une liste d'objets Book :

<code class="python">books = [Book('title1', 'author1'), Book('title2', 'author2'), Book('title1', 'author1')]
unique_books = list(set(books))</code>
Copier après la connexion

De plus, pour vérifier les doublons dans une base de données, vous pouvez utiliser l'approche suivante :

<code class="python">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]</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!