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:
https://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 sama (dengan is operator) dan== 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.