Langsung ke konten

Set di Python: Kumpulan Nilai Unik untuk Operasi Himpunan

Set adalah struktur data di Python untuk menyimpan nilai unik tanpa urutan. Artikel ini membahas cara membuat set, operasi himpunan, dan menghapus duplikat.

Belajar Python Level Basic
Belajar Python Level Basic
Advertisement

Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas Tuple di Python. Sekarang kita bahas struktur data yang peduli pada keunikan nilai, bukan urutan.

List dan tuple menyimpan urutan. Tapi kadang yang kamu butuhkan bukan urutan, melainkan kumpulan nilai yang pasti berbeda satu sama lain. Di sinilah set berguna.

Apa itu Set?

Set adalah kumpulan nilai unik yang tidak berurutan. Set dibuat dengan kurung kurawal {}:

buah = {"apel", "jeruk", "mangga"}
angka = {1, 2, 3, 4, 5}

Set otomatis membuang nilai yang duplikat:

angka = {1, 2, 2, 3, 3, 3}
print(angka)   # {1, 2, 3}

Karena tidak berurutan, set tidak punya indeks. angka[0] menghasilkan TypeError.

Set kosong tidak bisa ditulis {}, karena itu berarti dictionary. Gunakan set():

kosong = set()
print(type(kosong))   # <class 'set'>

Menambah dan Menghapus Item

Item set bisa ditambah dan dihapus, tapi tidak bisa diubah karena tidak punya posisi:

buah = {"apel", "jeruk"}

buah.add("mangga")
print(buah)   # {'apel', 'jeruk', 'mangga'}

buah.remove("jeruk")
print(buah)   # {'apel', 'mangga'}

Method yang sering dipakai:

MethodKegunaan
add(x)Menambah item x
remove(x)Menghapus x, error kalau tidak ada
discard(x)Menghapus x, aman kalau tidak ada
pop()Menghapus item sembarang
clear()Mengosongkan set

Perbedaan remove() dan discard() penting. remove() memicu KeyError kalau itemnya tidak ada, sedangkan discard() tidak:

buah = {"apel", "jeruk"}

buah.discard("durian")   # tidak error
print(buah)              # {'apel', 'jeruk'}

Menghapus Duplikat

Kegunaan set yang paling sering dipakai adalah membersihkan data dari duplikat:

angka = [1, 2, 2, 3, 3, 3, 4]
unik = set(angka)

print(unik)              # {1, 2, 3, 4}
print(list(unik))        # [1, 2, 3, 4]

Pola ini sangat praktis: ubah list ke set untuk membuang duplikat, lalu ubah kembali ke list bila butuh urutan.

Operasi Himpunan

Set mendukung operasi himpunan seperti di pelajaran matematika. Ada empat yang utama:

Union (Gabungan)

Union menggabungkan dua set, duplikatnya otomatis hilang:

a = {1, 2, 3}
b = {3, 4, 5}

print(a | b)          # {1, 2, 3, 4, 5}
print(a.union(b))     # {1, 2, 3, 4, 5}

Intersection (Irisan)

Intersection mengambil item yang ada di kedua set:

a = {1, 2, 3}
b = {3, 4, 5}

print(a & b)                # {3}
print(a.intersection(b))    # {3}

Difference (Selisih)

Difference mengambil item yang ada di set pertama tapi tidak ada di set kedua:

a = {1, 2, 3}
b = {3, 4, 5}

print(a - b)              # {1, 2}
print(a.difference(b))    # {1, 2}

Symmetric Difference

Symmetric difference mengambil item yang ada di salah satu set, tapi tidak di keduanya:

a = {1, 2, 3}
b = {3, 4, 5}

print(a ^ b)                      # {1, 2, 4, 5}
print(a.symmetric_difference(b))  # {1, 2, 4, 5}

Membandingkan Set

Set juga bisa dibandingkan untuk mengecek hubungan antar himpunan:

a = {1, 2, 3}
b = {1, 2, 3, 4, 5}

print(a.issubset(b))     # True, a bagian dari b
print(b.issuperset(a))   # True, b memuat a
print(a.isdisjoint({7, 8}))   # True, tidak ada irisan

Contoh Program: Mencari Teman yang Sama

Mari cari hobi yang sama antara dua orang:

# hobi_sama.py

hobi_budi = {"membaca", "coding", "bersepeda"}
hobi_sari = {"coding", "memasak", "bersepeda"}

sama = hobi_budi & hobi_sari
semua = hobi_budi | hobi_sari
hanya_budi = hobi_budi - hobi_sari

print(f"Hobi sama: {sama}")
print(f"Semua hobi: {semua}")
print(f"Hanya Budi: {hanya_budi}")

Output:

Hobi sama: {'coding', 'bersepeda'}
Semua hobi: {'membaca', 'coding', 'bersepeda', 'memasak'}
Hanya Budi: {'membaca'}

Urutan output set bisa berbeda di setiap komputer karena set tidak menjaga urutan.

Kesalahan Umum Pemula

  • Menulis set kosong dengan {} — itu dictionary, gunakan set().
  • Mengakses set dengan indeks — set tidak berurutan, memicu TypeError.
  • Memakai remove() untuk item yang belum tentu ada — pakai discard() agar aman.
  • Mengira set bisa menampung list — item set harus hashable, list tidak bisa.
  • Mengandalkan urutan output set — urutannya tidak dijamin.

Ringkasan

  • Set menyimpan nilai unik tanpa urutan
  • Set dibuat dengan {}, sedangkan set kosong dengan set()
  • Set otomatis membuang duplikat
  • Operasi himpunan: union |, intersection &, difference -, symmetric difference ^
  • remove() error kalau item tidak ada, discard() tidak
  • Konversi list ke set adalah cara cepat menghapus duplikat

Langkah Selanjutnya

List, tuple, dan set menyimpan nilai. Tapi ketiganya mengakses data lewat posisi atau keunikan, bukan lewat nama. Padahal sering kali kita ingin mencari nilai berdasarkan label, misalnya harga per nama barang.

Artikel selanjutnya membahas Dictionary di Python, struktur data yang menyimpan pasangan key dan value.