Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie entferne ich doppelte Objekte effizient aus einer Python-Liste und behalte dabei gleichzeitig die Reihenfolge bei?

Barbara Streisand
Freigeben: 2024-10-27 00:22:30
Original
338 Leute haben es durchsucht

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

Effizienter Umgang mit doppelten Objekten mit Python

In Python kann es notwendig sein, doppelte Objekte aus einer Liste zu entfernen und dabei die ursprüngliche Reihenfolge beizubehalten. Dieses Problem tritt auf, wenn Sie über eine Liste benutzerdefinierter Objekte verfügen und Duplikate anhand bestimmter Kriterien filtern oder in einer Datenbank nach Duplikaten suchen möchten.

Bezüglich Ihrer spezifischen Anforderungen müssen Sie die Eindeutigkeit innerhalb Ihrer Objekte definieren, um sie effektiv nutzen zu können die set(list_of_objects)-Methode. Dazu müssen Sie Ihre Objekte hashbar machen, indem Sie die Methoden eq und hash implementieren.

Die Methode eq definiert Objektgleichheit. Wenn Sie beispielsweise Buchobjekte mit den Attributen „Autorname“ und „Titel“ haben, bei denen die Kombination aus Autor und Titel eindeutig ist, könnte die Methode eq so aussehen:

<code class="python">def __eq__(self, other):
    return self.author_name == other.author_name and self.title == other.title</code>
Nach dem Login kopieren

Ähnlich gilt die Die Hash-Methode generiert einen Hashwert für das Objekt. Ein gängiger Ansatz besteht darin, ein Tupel von Schlüsselattributen zu hashen:

<code class="python">def __hash__(self):
    return hash(('title', self.title, 'author_name', self.author_name))</code>
Nach dem Login kopieren

Mit diesen Methoden können Sie jetzt Duplikate aus einer Liste von Buchobjekten entfernen:

<code class="python">books = [Book('title1', 'author1'), Book('title2', 'author2'), Book('title1', 'author1')]
unique_books = list(set(books))</code>
Nach dem Login kopieren

Darüber hinaus Um in einer Datenbank nach Duplikaten zu suchen, können Sie den folgenden Ansatz verwenden:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Objekte effizient aus einer Python-Liste und behalte dabei gleichzeitig die Reihenfolge bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!