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:
| Method | Kegunaan |
|---|---|
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, gunakanset(). - Mengakses set dengan indeks — set tidak berurutan, memicu
TypeError. - Memakai
remove()untuk item yang belum tentu ada — pakaidiscard()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 denganset() - 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.
