Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Mengeluarkan Objek Duplikat dengan Cekap dari Senarai Python Semasa Memelihara Pesanan?

Bagaimanakah Saya Mengeluarkan Objek Duplikat dengan Cekap dari Senarai Python Semasa Memelihara Pesanan?

Barbara Streisand
Barbara Streisandasal
2024-10-27 00:22:30339semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn