Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hapus duplikat dalam daftar objek dengan Python

set(list_of_objects) hanya akan menghapus duplikat jika Anda mengetahui apa itu duplikat, yaitu, Anda perlu mendefinisikan keunikan suatu objek.

Untuk melakukan itu, Anda harus membuat objek hashable. Anda perlu mendefinisikan keduanya __hash__ dan __eq__ caranya, berikut caranya:

http://docs.python.org/glossary.html#term-hashable

Padahal, Anda mungkin hanya perlu mendefinisikan __eq__ metode.

EDIT :Bagaimana menerapkan __eq__ metode:

Anda harus tahu, seperti yang saya sebutkan, definisi keunikan objek Anda. Misalkan kita memiliki Buku dengan atribut author_name dan title yang kombinasinya unik, (jadi, kita dapat memiliki banyak buku yang ditulis oleh Stephen King, dan banyak buku bernama The Shining, tetapi hanya satu buku bernama The Shining karya Stephen King), maka implementasinya adalah sebagai berikut:

def __eq__(self, other):
    return self.author_name==other.author_name\
           and self.title==other.title

Demikian pula, terkadang saya mengimplementasikan __hash__ metode:

def __hash__(self):
    return hash(('title', self.title,
                 'author_name', self.author_name))

Anda dapat memeriksa bahwa jika Anda membuat daftar 2 buku dengan penulis dan judul yang sama, objek buku akan sama (dengan is operator) dan sama (dengan == operator). Juga, ketika set() digunakan, itu akan menghapus satu buku.

EDIT :Ini adalah salah satu jawaban lama saya, tetapi saya baru menyadari bahwa ada kesalahan yang diperbaiki dengan coretan di paragraf terakhir:objek dengan hash() yang sama tidak akan memberikan True jika dibandingkan dengan is . Akan tetapi, hashabilitas objek digunakan jika Anda bermaksud menggunakannya sebagai elemen himpunan, atau sebagai kunci dalam kamus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara konektor/Python MySQLdb, mysqlclient dan MySQL?

  2. Hitung desil dari keterkinian di MySQL

  3. Mengapa mysqli memberikan perintah tidak sinkron?

  4. MySQL Query - Catatan antara Hari Ini dan 30 Hari Terakhir

  5. Simpan file PDF di MySQL