Estimasi Waktu Baca: 4 menit

Pengenalan Dictionary

Dictionary merupakan tipe data yang setiap anggotanya tersusun atas dua atribut yaitu key dan value atau dalam bahasa indonesianya kunci dan nilai. Key bisa dikatakan bertindak sebagai indeks di dalam dictionary. Key ini bisa berupa berbagai tipe data kecuali list, set, dan dictionary. Sedangkan value mendefinisikan data yang bisa berisi semua macam tipe data termasuk dictionary sendiri.

Cara Membuat Dictionary

Untuk membuat dictionary kita butuh tanda kurung kurawal dengan setiap anggota di dalamnya dipisahkan dengan tanda koma. Sedangkan dua atribut key dan value tadi dipisah dengan tanda titik dua.

>>> siswa = {1:"Ani", 2:"Budi", 3:"Cika", 4:"Denis", 5:"Erika"}
>>> siswa
{1: 'Ani', 2: 'Budi', 3: 'Cika', 4: 'Denis', 5: 'Erika'}

Untuk mengecek tipe datanya gunakan fungsi type().

>>> siswa = {1:"Ani", 2:"Budi", 3:"Cika", 4:"Denis", 5:"Erika"}
>>> siswa
{1: 'Ani', 2: 'Budi', 3: 'Cika', 4: 'Denis', 5: 'Erika'}
>>> type(siswa)
<class 'dict'>

Karena key pada dictionary bisa dikatakan mewakili indeks, yang mana salah satu sifat indeks yaitu nilainya harus bersifat unik. Maka tidak boleh ada lebih dari satu anggota dengan key yang bernilai sama.

Lantas bagaimana bila ada lebih dari satu anggota dengan key yang sama?

Maka dictionary akan menghapus salah satu anggota tersebut, kemudian bila valuenya berbeda, maka akan dipilih value dari anggota (yang key-nya sama) yang berada paling kanan atau terbaru.

>>> kamus = {1:'Ani', 2:'Budi', 3:'Cika', 1:'Denis', 3:'Fani'}
>>> kamus
{1: 'Denis', 2: 'Budi', 3: 'Fani'}

Bermacam Anggota Dictionary

Sebelum masuk ke situ, saya ingin jelaskan sedikit bahwa penyebutan isi dalam dictionary bisa kalian sebut sebagai data, item, elemen, atau anggota. Kalau saya lebih suka menyebutnya anggota.

Lanjut, sudah dijelaskan di awal artikel bila anggota tipe data dictionary tersusun atas key dan value. Dijelaskan pula bahwa tidak semua tipe data bisa menjadi key, namun yang pasti semua tipe data mampu menjadi value.

Tipe Data yang Dapat Menjadi Key

Terhitung ada 4 tipe data antara lain tipe data numerik, string, boolean, dan tuple yang mampu menjadi key dalam dictionary.

Tipe Data Numerik

Terdapat tiga tipe yang termasuk ke dalam tipe data numerik, antara lain integer, float, dan complex. Ketiganya dapat menjadi entah itu key atau value dalam dictionary.

>>> # Dictionary dengan key dan value bertipe bilangan bulat (integer) 
... bulat = {1:1, 2:2, 3:3, 4:4, 5:5} 
>>> bulat 
{1:1, 2:2, 3:3, 4:4, 5:5}

>>> # Dictionary dengan key dan value bertipe bilangan desimal (float) 
... desimal = {1.0:1.0, 2.0:2.0, 3.0:3.0, 4.0:4.0, 5.0:5.0} 
>>> desimal 
{1.0:1.0, 2.0:2.0, 3.0:3.0, 4.0:4.0, 5.0:5.0} 

>>> # Dictionary dengan key dan value bertipe bilangan kompleks (complex) 
... kompleks = {1j:1j, 2j:2j, 3j:3j, 4j:4j, 5j:5j} 
>>> kompleks 
{1j:1j, 2j:2j, 3j:3j, 4j:4j, 5j:5j}

Tipe Data String

Tipe data string atau tipe data teks juga dapat menjadi key dan value sebuah dictionary, meskipun kita tahu bahwa tipe data ini juga termasuk ke dalam tipe data berurut.

>>> # Dictionary dengan key dan value bertipe String
... teks = {"1":"Ani", "2":"Budi", "3":"Cita", "4":"Dika", "5":"Ega"}
>>> teks
{'1': 'Ani', '2': 'Budi', '3': 'Cita', '4': 'Dika', '5': 'Ega'}

Tipe Data Boolean

Tipe data boolean terdiri dari dua nilai, True dan False. Meskipun hanya terdiri dari dua nilai, tipe data ini juga dapat menjadi dua atribut (key dan value) tipe data dictionary.

>>> # Dictionary dengan key dan value bertipe boolean
... boolean = {True:True, False:False}
>>> boolean
{True: True, False: False}

Tipe Data Tuple

Selain string yang sudah disebutkan sebelumnya, key dictionary juga dapat terdiri dari tipe data berurut lain seperti tuple.

>>> # Dictionary dengan key dan value bertipe tuple
... tupel = {(1,):("A",), (2,):("B",), (3,):("C",)} 
>>> tupel
{(1,): ('A',), (2,): ('B',), (3,): ('C',)}

Tipe Data Yang Tidak Dapat Menjadi Key

Seperti sudah dijelaskan sebelumnya bahwa tidak semua tipe data bisa menjadi anggota dictionary, ada beberapa yang tidak diizinkan menjadi anggota dictionary seperti list, set, dan dictionary itu sendiri.

Tipe Data List

List dalam dictionary hanya bisa menjadi value, jika menjadi key ia akan error.

>>> # Dictionary dengan value List
... daftar = {1:[1]}
>>> daftar
{1: [1]}

>>> # Dictionary dengan key List 
... daftar = {[1]:1}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'list'

Tipe Data Set

Set juga begitu, dalam dictionary hanya mampu bertindak sebagai value.

>>> # Dictionary dengan value Set 
... himpunan = {1:{1}} 
>>> himpunan 
{1: {1}} 

>>> # Dictionary dengan key Set 
... himpunan = {{1}:1}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'set'

Tipe Data Dictionary

Dictionary sendiri juga begitu hanya bisa berperan sebagai value saja.

>>> # Dictionary dengan value sesama Dictionary
... kamus = {1:{1:"1"}}
>>> kamus
{1:{1:"1"}}

>>> # Dictionary dengan key sesama Dictionary
... kamus = {{1:"1"}:1}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'dict'

Cara Mengakses Dictionary

Karena key bertindak sebagai indeks maka ada dua cara yang dapat digunakan untuk mengakses (value) dictionary.

Cara Manual

Cara manual di sini maksudnya, kita mengakses anggota dictionary secara individu atau satu persatu secara manual. Untuk menerapkan cara ini, kita memerlukan nama variabel yang bersangkutan diikuti dengan tanda kurung siku. Nah, di dalam kurung siku inilah key setiap anggota diletakkan. Lebih jelasnya lihat rumus berikut.

>>> nama_variabel[kunci]

Untuk penerapan kodenya sebagai berikut.

>>> siswa = {1:"Ani", 2:"Budi", 3:"Cita", 4:"Dika", 5:"Ega") 
>>> siswa[1]
'Ani'
>>> siswa[5]
'Ega'

Menggunakan Perulangan

Tipe data dictionary termasuk salah satu objek iterasi. Objek iterasi sendiri merupakan objek yang dapat menghasilkan proses pengulangan, yang mana dari hal ini kita dapat menggunakan perulangan untuk mengakses anggotanya. Objek iterasi mencakup semua tipe data yang masuk ke dalam kategori struktur data, selain itu string juga termasuk objek iterasi.

Berikut salah satu program untuk menampilkan value dari anggota dictionary dengan menggunakan perulangan.

>>> siswa = {1:"Ani", 2:"Budi", 3:"Cita", 4:"Dika", 5:"Ega"} 
>>> for i in siswa: 
...   print(siswa[i]) 
... 
Ani
Budi
Cita
Dika
Ega

Kita juga bisa menampilkan key masing-masing anggota.

>>> siswa = {"A":"Ani", "B":"Budi", "C":"Cita", "D":"Dika", "E":"Ega"} 
>>> for i in siswa: 
...   print(i) 
... 
A
B
C
D
E

Dictionary Bersifat Mutable

Mutable artinya data di dalam dictionary dapat diubah, sama seperti list dan set.

>>> siswa = {1:"Ani", 2:"Budi", 3:"Cita", 4:"Dika", 5:"Ega"}
>>> siswa[3] = "Fauzan"
>>> siswa
{1: 'Ani', 2: 'Budi', 3: 'Fauzan', 4: 'Dika', 5: 'Ega'}

Lawannya adalah immutable (tidak bisa diubah) seperti string dan tuple.

>>> # Immutable pada Tuple 
... siswa = ("Ani", "Budi", "Cita", "Dika", "Ega")
>>> siswa[2] = "Fani"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment

>>> # Immutable pada String
... angka = "012345"
>>> angka[2] = "9"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'str' object does not support item assignment