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

Barbara Streisand
Lepaskan: 2024-10-27 00:22:30
asal
338 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!