5 Metode untuk Menghapus Item Duplikat dari Daftar Python

Diterbitkan: 2022-07-05

Dalam tutorial ini, Anda akan belajar cara menghapus item duplikat dari daftar Python.

Saat Anda bekerja dengan daftar dengan Python, terkadang Anda mungkin perlu bekerja hanya dengan item unik dalam daftar – dengan menghapus duplikatnya.

Ada beberapa cara berbeda yang dapat Anda lakukan. Dalam tutorial ini, kita akan membahas lima teknik tersebut.

Dasar-dasar Daftar Python

Mari kita mulai diskusi kita dengan meninjau dasar-dasar daftar Python.

Daftar python bisa berubah. Jadi Anda dapat memodifikasinya di tempat dengan menambahkan dan menghapus elemen dari daftar. Selain itu, daftar Python adalah kumpulan elemen yang belum tentu unik.

Jadi bagaimana Anda hanya mempertahankan elemen unik dan menghapus elemen duplikat atau berulang?

Nah, Anda bisa melakukannya dengan beberapa cara berbeda. Anda dapat membuat daftar baru yang hanya berisi elemen unik dalam daftar asli. Atau Anda dapat memilih untuk mengubah daftar asli di tempat dan menghapus item duplikat.

Kita akan mempelajari ini secara rinci dalam tutorial ini.

Metode untuk Menghapus Duplikat dari Daftar Python

Mari kita ambil contoh dunia nyata. Misalkan Anda berada di pesta ulang tahun teman Anda.

Dalam koleksi manisan yang ditampilkan, terlihat ada beberapa item yang diulang-ulang. Anda sekarang ingin menghapus item duplikat itu dari daftar permen.

hapus-duplikat-dari-daftar

Mari kita buat daftar sweets yang berisi semua item pada gambar di atas.

 sweets = ["cupcake","candy","lollipop","cake","lollipop","cheesecake","candy","cupcake"]

Dalam daftar sweets di atas, item 'permen' dan 'cupcake' diulang dua kali. Mari kita gunakan daftar contoh ini untuk menghapus item duplikat.

Ulangi Daftar Python untuk Menghapus Duplikat

Metode yang paling mudah adalah membuat daftar baru yang berisi setiap item tepat satu kali.

Baca melalui sel kode di bawah ini:

 unique_sweets = [] for sweet in sweets: if sweet not in unique_sweets: unique_sweets.append(sweet) print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
  • Kami menginisialisasi daftar kosong unique_sweets .
  • Saat mengulang sweets list , kami mengakses setiap sweet .
  • Jika sweet belum ada di daftar unique_sweets , kami menambahkannya ke akhir daftar unique_sweets menggunakan metode .append() .

Misalkan Anda menemukan item yang berulang, misalnya, kemunculan 'permen' kedua dalam daftar sweets . Ini tidak ditambahkan ke daftar unique_sweets karena sudah ada: sweet not in unique_sweets bernilai False untuk kemunculan kedua 'cupcake' dan 'permen'.

Oleh karena itu, dalam metode ini, setiap item muncul tepat satu kali dalam daftar unique_sweets —tanpa pengulangan.

Gunakan Pemahaman Daftar untuk Menghapus Duplikat

Anda juga dapat menggunakan pemahaman daftar untuk mengisi daftar unique_sweets .

Ingin menyegarkan dasar-dasar pemahaman daftar?

️ Lihat tutorial tentang pemahaman daftar dengan Python.

Mari kita gunakan ekspresi pemahaman daftar: [output for item in iterable if condition True] untuk menulis ulang perulangan di atas secara ringkas.

 unique_sweets = [] [unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets] print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']

Meskipun Anda membuat daftar baru, Anda tidak mengisi daftar yang dibuat dengan nilai. Ini karena outputnya adalah operasi .append() ke daftar unique_sweets .

Untuk menghapus item duplikat dari daftar Python, Anda juga dapat menggunakan metode daftar bawaan, dan kami akan membahasnya di bagian berikutnya.

Gunakan Metode Daftar Bawaan untuk Menghapus Duplikat

Anda dapat menggunakan metode daftar Python .count() dan .remove() untuk menghapus item duplikat.

– Dengan sintaks list.count(value) , metode .count() mengembalikan berapa kali value muncul dalam list . Jadi hitungan yang sesuai dengan item berulang akan lebih besar dari 1.

list.remove(value) menghapus kemunculan nilai pertama dari daftar.

Menggunakan di atas, kita memiliki kode berikut.

 for sweet in sweets: # check if the count of sweet is > 1 (repeating item) if sweets.count(sweet) > 1: # if True, remove the first occurrence of sweet sweets.remove(sweet) print(sweets) # Output ['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']

Karena metode .remove() hanya menghapus kemunculan pertama dari suatu nilai, Anda tidak dapat menggunakannya untuk menghapus item yang muncul lebih dari dua kali.

  • Jika item tertentu diduplikasi (terjadi tepat dua kali), metode ini menghilangkan kemunculan pertama.
  • Jika item tertentu diulang K kali, maka setelah menjalankan kode di atas, pengulangan K-1 akan tetap ada.

Tetapi secara umum, ketika kita mengatakan duplikat, kita biasanya mengacu pada semua pengulangan.

Untuk menangani kasus ini, Anda dapat memodifikasi loop di atas untuk menghapus semua pengulangan kecuali satu. Alih-alih menggunakan if conditional untuk memeriksa jumlah item tertentu, Anda dapat menjalankan while loop untuk menghapus duplikasi berulang kali hingga jumlah setiap item dalam daftar adalah 1.

Daftar sweets sekarang berisi 2 pengulangan 'cupcake' dan 3 pengulangan 'permen'.

 sweets = ["cupcake","candy","lollipop","cake","lollipop","candy","cheesecake","candy","cupcake"]

Anda dapat menggunakan loop while untuk menghapus pengulangan, seperti yang ditunjukkan di bawah ini. Perulangan while terus berjalan selama jumlah manis dalam permen lebih besar dari 1. Jika hanya satu kemunculan yang tersisa, kondisi sweets.count(sweet) > 1 menjadi False, dan loop melompat ke item berikutnya.

 for sweet in sweets: # check if the count of sweet is > 1 (repeating item) while(sweets.count(sweet) > 1): # repeatedly remove the first occurrence of sweet until one occurrence remains. sweets.remove(sweet) print(sweets) # Output ['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']

Tetapi menggunakan loop bersarang mungkin tidak terlalu efisien, jadi Anda dapat mempertimbangkan untuk menggunakan salah satu teknik lain yang dibahas jika Anda bekerja dengan daftar besar.

Sejauh ini, kami telah mempelajari hal-hal berikut:

  • Metode untuk menghapus item duplikat dari daftar Python—dengan membuat daftar baru—hanya berisi item unik
  • Metode daftar .count() dan .remove() untuk mengubah daftar di tempat

Ada beberapa struktur data bawaan Python yang mengharuskan nilainya unik—tanpa pengulangan. Oleh karena itu, kita dapat melemparkan daftar Python ke salah satu struktur data ini untuk menghapus duplikat. Dan kemudian mengubahnya kembali ke daftar. Kita akan belajar bagaimana melakukan ini di bagian yang akan datang.

Keluarkan Daftar Python ke dalam Set untuk Menghapus Duplikat

Set Python adalah kumpulan elemen yang semuanya unik . Oleh karena itu, jumlah item yang ada dalam himpunan (diberikan oleh len(<set-obj> ) sama dengan jumlah elemen unik yang ada.

Anda dapat memasukkan Python iterable apa pun ke dalam satu set menggunakan sintaks: set(iterable) .

Sekarang, mari kita masukkan daftar manisan ke dalam satu set dan periksa hasilnya.

 set(sweets) # Output {'cake', 'candy', 'cheesecake', 'cupcake', 'lollipop'}

Dari output di sel kode di atas, kita melihat bahwa setiap item muncul tepat satu kali, dan duplikatnya telah dihapus.

Juga, perhatikan bahwa urutan item tidak harus sama dengan pesanan mereka di daftar permen asli. Ini karena, selain sebagai kumpulan elemen unik, objek set Python adalah koleksi yang tidak berurutan .

Sekarang kita telah menghapus duplikat dengan mentransmisikan daftar ke dalam satu set, kita dapat kembali mengubahnya menjadi daftar, seperti yang ditunjukkan di bawah ini.

 unique_sweets = list(set(sweets)) print(unique_sweets) # Output ['cake', 'cheesecake', 'candy', 'cupcake', 'lollipop']

Gunakan Item Daftar sebagai Kunci Kamus untuk Menghapus Duplikat

Kamus Python adalah kumpulan pasangan nilai kunci di mana kunci mengidentifikasi nilai secara unik.

Anda dapat membuat kamus Python menggunakan metode .fromkeys() dengan sintaks: dict.fromkeys(keys, values) . Di sini, keys dan values adalah iterable yang berisi kunci dan nilai kamus, masing-masing.

  • keys adalah parameter yang diperlukan , dan itu bisa berupa iterable Python apa pun yang sesuai dengan kunci kamus.
  • values adalah parameter opsional . Jika Anda tidak menentukan nilai yang dapat diubah, nilai default None akan digunakan.

Tanpa menentukan nilainya, dict.fromkeys(sweets) mengembalikan kamus Python di mana nilainya disetel ke None – nilai default. Sel kode di bawah ini menjelaskan hal ini.

 dict.fromkeys(sweets) # Output {'cake': None, 'candy': None, 'cheesecake': None, 'cupcake': None, 'lollipop': None}

Seperti pada bagian sebelumnya, kita dapat kembali mengonversi kamus menjadi daftar, seperti yang ditunjukkan di bawah ini.

 unique_sweets = list(dict.fromkeys(sweets)) print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']

Dari output di atas, kita dapat melihat bahwa item duplikat telah dihapus dari daftar sweets .

Menyimpulkan

Berikut adalah rekap dari berbagai metode yang dapat Anda gunakan untuk menghapus item duplikat atau pengulangan dari daftar Python.

  • Gunakan metode daftar Python .append() untuk menambahkan item yang tidak berulang ke daftar baru. Daftar baru berisi setiap item dalam daftar asli tepat satu kali dan menghapus semua pengulangan. Anda juga dapat melakukan ini menggunakan pemahaman daftar.
  • Gunakan metode .count() dan .remove() bawaan untuk menghapus item yang muncul tepat dua kali. Hal yang sama dapat ditempatkan dalam loop sementara untuk menghapus semua kejadian tambahan.
  • Keluarkan daftar Python ke dalam satu set untuk mempertahankan hanya elemen unik.
  • Gunakan dict.fromkeys(list) untuk menghapus duplikat dari daftar karena seharusnya tidak ada kunci pengulangan kamus.

Selanjutnya, lihat proyek Python untuk berlatih dan belajar. Atau pelajari cara menemukan indeks item dalam daftar Python. Selamat belajar!