Mengendalikan Objek Pendua dengan Python dengan Cekap
Dalam Python, anda mungkin perlu mengalih keluar objek pendua daripada senarai sambil mengekalkan susunan asal. Isu ini timbul apabila anda mempunyai senarai objek tersuai dan ingin menapis pendua berdasarkan kriteria tertentu atau menyemak pendua dalam pangkalan data.
Mengenai keperluan khusus anda, anda perlu menentukan keunikan dalam objek anda untuk menggunakan dengan berkesan kaedah set(senarai_objek). Ini melibatkan menjadikan objek anda boleh dicincang dengan melaksanakan kaedah eq dan cincang.
Kaedah eq mentakrifkan kesamaan objek. Contohnya, jika anda mempunyai objek Buku dengan atribut nama_pengarang dan tajuk, di mana gabungan pengarang dan tajuk adalah unik, kaedah eq mungkin kelihatan seperti ini:
<code class="python">def __eq__(self, other): return self.author_name == other.author_name and self.title == other.title</code>
Begitu juga, Kaedah cincang menjana nilai cincang untuk objek. Pendekatan biasa ialah mencincang sekumpulan atribut utama:
<code class="python">def __hash__(self): return hash(('title', self.title, 'author_name', self.author_name))</code>
Dengan kaedah ini disediakan, anda kini boleh mengalih keluar pendua daripada senarai objek Buku:
<code class="python">books = [Book('title1', 'author1'), Book('title2', 'author2'), Book('title1', 'author1')] unique_books = list(set(books))</code>
Selain itu, untuk menyemak pendua dalam pangkalan data, anda boleh menggunakan pendekatan berikut:
<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>
Atas ialah kandungan terperinci Bagaimanakah Saya Mengeluarkan Objek Duplikat dengan Cekap dari Senarai Python Semasa Memelihara Pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!