Bismillah.
Pada beberapa pertemuan yang lalu kita telah membahas berbagai macam tipe data pada python. Mulai dari tipe data yang bersifat asli seperti string, integer, boolean, dan float. Mau pun tipe data terusan seperti list dan tuple.
Nah, akan tetapi kita masih melewatkan dua buah tipe data yang belum kita bahas pada seri tutorial python dasar ini.
Yaitu:
- Tipe data set
- Dan dictionary
Kita akan bahas terlebih dahulu tentang tipe data set pada pertemuan kali ini.
Apa itu tipe data set?
Set dalam bahasa pemrograman python adalah tipe data kolektif yang digunakan untuk menyimpan banyak nilai dalam satu variabel dengan ketentuan:
- nilai anggota yang disimpan harus unik (tidak duplikat)
- nilai anggota yang sudah dimasukkan tidak bisa diubah lagi
- set bersifat unordered alias tidak berurut –yang artinya tidak bisa diakses dengan index.
Untuk lebih memahami 3 poin di atas, kita akan langsung melakukan praktik.
Cara membuat set
Secara umum kita bisa membuat set dengan 2 cara: dengan kurung kurawal {}
, atau dengan sebuah list
yang kita passing ke dalam fungsi set()
.
Perhatikan kode program berikut:
# menggunakan kurung kurawal
himpunan_siswa = {'Huda', 'Lendis', 'Wahid', 'Basith'}
print(himpunan_siswa)
# mengkonversi list ke dalam set
himpunan_buah = set(['mangga', 'apel'])
print(himpunan_buah)
# set dengan tipe data yang berbeda-beda
set_campuran = {'manusia', 'hewan', 5, True, ('A', 'B')}
print(set_campuran)
Jika kita jalankan kode di atas, kita akan mendapatkan output sebagai berikut:
{'Wahid', 'Lendis', 'Basith', 'Huda'}
{'apel', 'mangga'}
{True, 5, ('A', 'B'), 'hewan', 'manusia'}
Set bersifat unordered
Tipe data set bersifat unordered alias tidak berurut. Itu artinya, kita tidak bisa menggunakan index untuk mengakses nilai pada set. Kalau pun kita memaksa, kita hanya akan mendapatkan error:
set_ku = {'a'}
print(set_ku[0])
Pesan error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not subscriptable
Kita juga bisa perhatikan kode program yang telah kita buat sebelumnya:
himpunan_siswa = {'Huda', 'Lendis', 'Wahid', 'Basith'}
print(himpunan_siswa)
Di mana kita mendefinisikan 4 anggota set dengan urutan: Huda
, Lendis
, Wahid
, dan Basith
.
Akan tetapi setelah kita print, kita malah mendapatkan urutan yang berbeda:
{'Wahid', 'Lendis', 'Basith', 'Huda'}
Set bersifat unchangable
Set bersifat unchangable
, yang berarti bahwa nilai yang sudah kita masukkan ke dalam set, tidak bisa kita ubah lagi.
Akan tetapi, kita tetap bisa menambah dan menghapus anggota pada set.
Dan, karena set bersifat unchangable, set juga hanya bisa menerima anggota dari tipe data yang juga bersifat immutable.
Perhatikan contoh berikut:
# anggota set harus dari tipe data yang immutable
set_buah = { 'mangga', 'lemon', 'alpukat', True, 1, 2, 3 }
# kita bisa menjadikan tuple sebagai anggota
# karena ia bersifat immutable
papan_ketik = {
(1, 2, 3),
(4, 5, 6),
(7, 8, 9),
(0)
}
Tapi kita tidak bisa memasukkan list sebagai anggota karena list bersifat mutable, Perhatikan contoh berikut:
x = { 35, 100, ['a', 'b'] }
Pesan error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
Tidak bisa menerima nilai duplikat
Selain itu set
pada python juga tidak bisa menerima nilai duplikat. Jika kita memasukkan nilai yang sudah ada pada suatu set, maka nilai tersebut hanya akan muncul atau dimasukkan 1 kali saja.
Perhatikan contoh berikut ketika saya membuat list dengan kata “pagi” yang muncul sebanyak 2 kali:
list_kata = [
'pagi', 'ini', 'adalah', 'pagi', 'yang',
'sangat', 'cerah'
]
print(list_kata)
Output:
['pagi', 'ini', 'adalah', 'pagi', 'yang', 'sangat', 'cerah']
Sedangkan jika saya masukkan string “pagi” sebanyak dua kali dalam set seperti ini:
kata_unik = {
'pagi', 'ini', 'adalah', 'pagi', 'yang',
'sangat', 'cerah'
}
# atau bisa langsung konversi list_kata menjadi set
# supaya lebih ringkas:
# kata_unik = set(list_kata)
print(kata_unik)
Maka kata “pagi” hanya akan dimasukkan satu kali saja:
{'yang', 'sangat', 'ini', 'pagi', 'cerah', 'adalah'}
Menambah Anggota Baru
Seperti yang kita singgung di atas bahwa meskipun nilai set tidak bisa diubah, tapi tetap bisa ditambah dan dihapus.
Kita bisa menambah anggota baru ke dalam set dengan fungsi add()
dan fungsi update()
.
Perhatikan contoh berikut:
himpunan_abjad = {'a', 'b', 'c'}
print(himpunan_abjad)
# menambah satu-satu
himpunan_abjad.add('d')
himpunan_abjad.add('e')
# menambah lebih dari satu anggota sekaligus
himpunan_abjad.update({ 'f', 'g' })
# bisa juga pakai list
himpunan_abjad.update(['h', 'i'])
print(himpunan_abjad)
Jika kita jalankan, kita akan mendapatkan output sebagai berikut:
{'a', 'c', 'b'}
{'d', 'i', 'e', 'a', 'b', 'g', 'h', 'f', 'c'}
Menghapus Anggota
Untuk menghapus anggota pada set, terdapat 4 fungsi yang bisa kita gunakan:
-
remove(nilai)
Untuk menghapus nilai yang dicari. Jika nilai yang dicari tidak ada, maka akan error. -
discard(nilai)
Untuk menghapus nilai yang dicari. Jika nilai yang dicari tidak ada, tidak akan error. -
pop()
Mengambil dan menghapus nilai yang ada di sebelah kiri. -
clear()
Menghapus semua anggota.
Mari kita coba satu persatu.
himpunan = {'maya', 'budi', 100, ('a', 'b'), False, True}
print(himpunan)
# akan error jika nilai 100 tidak ada di dalam set
himpunan.remove(100)
print(himpunan)
# tidak akan error jika ('a', 'b') tidak ada di dalam set
himpunan.discard(('a', 'b'))
print(himpunan)
# remove nilai yang ada di sebelah kiri
nilaiYangDihapus = himpunan.pop()
print('nilaiYangDihapus =', nilaiYangDihapus)
print(himpunan)
# hapus semua nilai
himpunan.clear()
print(himpunan)
Jika dijalankan, berikut keseluruhan output yang akan kita dapat:
{False, True, 100, 'maya', 'budi', ('a', 'b')}
{False, True, 'maya', 'budi', ('a', 'b')}
{False, True, 'maya', 'budi'}
nilaiYangDihapus = False
{True, 'maya', 'budi'}
set()
Fungsi Keanggotaan Pada Set
Di antara keunggulan tipe data set adalah: keunikan anggotanya. Sehingga, dengan keunikan tersebut, python menyediakan kepada kita berbagai fungsi keanggotaan yang berguna untuk pengolahan data. Di antaranya:
- fungsi union (gabungan)
- fungsi intersection (irisan)
- fungsi difference (selisih)
- fungsi symmetric difference (komplement)
- dan lain sebagainya
Agar lebih jelas, mari kita coba beberapa di antaranya.
Anggap saja kita memliki dua grup WA: yaitu grup WA SMA, dan grup WA SMP. Dan kita memiliki teman bernama Ratna dan Andi yang merupakan teman SMP dan juga teman SMA sekaligus.
Untuk merepresentasikan hal tersebut, kita akan buat dua buah set seperti berikut:
grup_smp = {
'andi', 'budi', 'ratna', 'sari'
}
grup_sma = {
'putri', 'ratna', 'andi', 'agus'
}
Kita sekarang punya dua buah set: satu untuk grup smp, dan satu untuk grup sma.
Union (Gabungan)
Kita bisa melakukan operasi union, alias menggabungkan kedua anggota dari grup smp dan grup sma.
Ilustrasi operasi union:
Dalam python, kita bisa melakukan operasi union dengan simbol pipe
(|
) atau bisa memanggil fungsi set.union()
seperti berikut:
# cara 1
print(grup_smp | grup_sma)
# cara 2
print(grup_smp.union(grup_sma)
Jika dijalankan, kita akan mendapatkan output:
{'agus', 'andi', 'budi', 'ratna', 'sari', 'putri'}
{'agus', 'andi', 'budi', 'ratna', 'sari', 'putri'}
Perhatikan output di atas: meskipun ratna dan andi adalah anggota dari kedua grup tersebut, tapi nama mereka hanya muncul satu kali.
Intersection (Irisan)
Berikutnya adalah intersection atau irisan: yaitu kita akan mengambil siapa saja siswa yang menjadi anggota grup sma yang juga adalah anggota grup smp.
Ilustrasi operasi intersection:
Kita bisa melakukannya dengan dua cara: yakni menggunakan simbol &
, atau menggunakan fungsi set.intersection()
seperi berikut:
print(grup_smp & grup_sma) # cara 1
print(grup_smp.intersection(grup_sma)) # cara 2
Jika dijalankan, kita akan mendapatkan output:
{'ratna', 'andi'}
{'ratna', 'andi'}
Difference (Selisih)
Difference atau selisih adalah proses mengekstrak anggota grup pertama, yang bukan anggota grup kedua.
Perhatikan ilustrasi berikut:
Untuk melakukannya, kita bisa menggunakan simbol -
atau dengan memanggil fungsi set.difference()
seperti ini:
# difference
print('\nanggota grup smp yang bukan anggota grup sma')
print(grup_smp - grup_sma)
print(grup_smp.difference(grup_sma))
print('\ndibalik, anggota grup sma yang bukan anggota grup smp:')
print(grup_sma - grup_smp)
print(grup_sma.difference(grup_smp))
Outpunya akan kita lihat setelah kita mencoba fungsi keanggotaan symmetric_difference
.
Symmetric Difference (Yang hanya menjadi anggota satu grup saja)
Bedanya dengan difference, symmetric difference akan menghasilkan anggota-anggota dari kedua grup, yang mana tiap anggota tersebut hanya menjadi anggota dari satu grup saja.
Tambahkan kode program berikut:
# symmetric_difference
print('\nanggota yang hanya ikut satu grup saja:')
print(grup_sma.symmetric_difference(grup_smp))
Jika kita jalankan, gabungan kode program dari fungsi difference
dan juga symmetric_difference
akan menghasilkan output sebagai berikut:
anggota grup smp yang bukan anggota grup sma
{'sari', 'budi'}
{'sari', 'budi'}
dibalik, anggota grup sma yang bukan anggota grup smp:
{'agus', 'putri'}
{'agus', 'putri'}
anggota yang hanya ikut satu grup saja:
{'budi', 'sari', 'agus', 'putri'}
Menampilkan Anggota Set Dengan Perulangan
Berikutnya kita juga bisa menampilkan tiap anggota dari sebuah set dengan melakukan perulangan for.
Perhatikan contoh berikut:
himpunan_buah = {
'pepaya', 'apel', 'jagung', 'rambutan'
}
for buah in himpunan_buah:
print(buah)
Output:
rambutan
pepaya
jagung
apel
Fungsi-Fungsi Bawaan Set
Terakhir tapi bukan yang paling akhir, berikut ini adalah kesimpulan fungsi-fungsi bawaan tipee data set yang bisa kita gunakan:
Fungsi | Kegunaan |
---|---|
add() |
Menambahkan satu anggota ke dalam set |
clear() |
Menghapus keseluruhan anggota set |
copy() |
Membuat salinan satu set menjadi set baru |
difference() |
Melakukan operasi selisih antar dua set |
difference_update() |
Menghapus anggota set lain yang ada di set sekarang |
discard() |
Menghapus satu anggota dari set |
intersection() |
Melakukan operasi irisan antar dua set |
intersection_update() |
Mengupdate anggota yang menjadi irisan dari dua set |
isdisjoint() |
Mengembalikan nilai True jika dua set tidak memiliki irisan |
issusbset() |
Mengembalikan nilai True jika set lain memiliki anggota dari set sekarang |
issuperset() |
Mengembalikan nilai True jika set sekarang memiliki anggota dari set lain |
pop() |
Menghapus dan mengembalikan nilai yang dihapus dari sebuah set |
remove() |
Menghapus suatu nilai dari set |
symmetric_difference() |
Melakukan operasi komplemen antar dua set |
symmetric_difference_update() |
Mengupdate set dari hasil komplemen |
union() |
Melakukan operasi gabungan dari dua atau lebih set |
update() |
Mengupdate set dengan menambahkan suatu nilai tertentu |
Agar lebih memahami semua fungsi di atas, teman-teman bisa mencobanya satu-persatu.
Kode program lengkap
Seperti biasa, untuk kode program lengkap bisa kalian dapatkan pada repository github python-dasar.
Jangan lupa kasih star ya!βπ
Pertemuan Selanjutnya
Insyaallah pada pertemuan berikutnya kita akan membahas tentang tipe data dictionary pada python.
Jangan lupa share, dan komen jika ada yang kurang jelas!
Terima kasih banyak!