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 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.