Cara Menghapus Duplikat Dari Daftar dengan Python

Pelajari cara menghapus duplikat dari daftar dengan Python sambil mempertahankan atau mengabaikan urutan. Bandingkan konversi set, tombol dict, dan metode loop.

Coba Solusi ini di Editor

Ikhtisar

Data duplikat sering kali masuk ke dalam daftar melalui pengambilan database, interaksi pengguna, atau agregasi log. Menghapus duplikat ini merupakan langkah pembersihan data mendasar yang memastikan keunikan dan mencegah redundansi dalam logika hilir. Python menyediakan beberapa teknik untuk mencapai hal ini, mulai dari konversi set cepat hingga operasi berbasis loop yang memperhatikan pengurutan elemen.

Cara tercepat dan paling umum untuk menghilangkan elemen duplikat adalah mengonversi daftar menjadi `set` menggunakan konstruktor `set()`, lalu mengonversinya kembali menjadi daftar. Karena kumpulan tidak boleh berisi nilai duplikat, proses ini secara otomatis membuang duplikat. Kelemahan dari pendekatan ini adalah himpunan tidak berurutan, yang berarti urutan elemen aslinya hilang.

Untuk mempertahankan urutan asli elemen sambil menghapus duplikat,Python 3.7+ menawarkan solusi cerdas menggunakan kelas kamus bawaan: `list(dict.fromkeys(my_list))`. Karena kunci kamus bersifat unik dan mempertahankan urutan penyisipan, metode ini secara efektif menghapus duplikat elemen sambil menjaga urutannya tetap utuh. Untuk kriteria khusus atau versi Python yang lebih lama, perulangan manual menggunakan kumpulan pembantu untuk melacak elemen yang terlihat juga sangat efektif.

Kode & Output Eksekusi

Skrip ini mendemonstrasikan penghapusan duplikat elemen daftar menggunakan set, kunci kamus, dan loop manual.

deduplicate_list.py
Coba di Editor
numbers = [2, 1, 2, 3, 1, 4]

# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)

# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)

# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
    if item not in seen:
        seen.add(item)
        unique_loop.append(item)
print("Loop unique:", unique_loop)
Keluaran Terminal
Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]

Implementasi Langkah demi Langkah

  • Ubah daftar menjadi satu set untuk menghapus duplikat secara instan menggunakan set(daftar_saya).
  • Gunakan list(dict.fromkeys(my_list)) untuk menghapus duplikat sambil mempertahankan urutan penyisipan.
  • Gunakan set pembantu dalam satu lingkaran untuk memfilter duplikat jika Anda memerlukan validasi khusus.

Pertanyaan yang Sering Diajukan

Metode manakah yang tercepat untuk daftar besar?

Mengonversi ke satu set adalah yang tercepat karena pengoptimalan tingkat C, diikuti oleh dict.fromkeys().

Bagaimana cara menghapus duplikat daftar kamus?

Karena kamus tidak dapat di-hash, Anda tidak dapat menggunakan set secara langsung. Anda harus menggunakan pemfilteran pemahaman loop atau daftar berdasarkan ID/kunci unik.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.