Dictionary pada Python

Dictionary bisa digunakan untuk menyimpan berbagai macam data dan informasi yang kompleks. Memahami dictionary membuat programmer lebih mudah untuk memodelkan objek di dunia nyata ke dalam sebuah program. Misalkan untuk objek ‘car‘, kita bisa menyimpan warna, jumlah roda, kapasitas penumpang, tipe mesin dan segala sesuatu terkait dengan car tersebut dalam sebuah dictionary. Mari kita lihat contoh sederhana pendefinisian sebuah dictionary.

Dog = {'color: brown', 'legs': 4}

Dalam Python, dictionary didefinisikan dalam sebuah kurung kurawal { }. Dictionary sendiri merupakan kumpulan pasangan key dan value (syntax dalam program ditulis ‘key’: value). Setiap pasang key-value, dipisahkan dengan tanda koma. Pada contoh di atas, objek  dog direpresentasikan sebagai sebuah dictionary bernama Dog, di mana Dog memiliki 2 buah key, yakni ‘color‘ dan ‘legs‘. Key harus bersifat uniKey tersebut mewakili karakteristik yang dimiliki oleh sebuah objek, seekor anjing memiliki kaki dan warna bulu. Nama key haruslah unik, artinya tidak ada nama key yang sama dalam sebuah dictionary. Masing-masing key tersebut memiliki nilai atau value. Value bisa berupa String, angka, List, atau bahkan sebuah dictonary lagi. Syntax untuk mengakses nilai atau value sebuah key pada dictionary adalah sebagai berikut:

nama_dictionary['nama_key']
Contoh: Dog['color'] dan Dog['legs']

Pada dictionary Dog di bawah ini, nilai dari Dog[‘color’] adalah sebuah String, yakni white, dan nilai dari Dog[‘legs’] adalah angka 4.

>>> Dog = {'color: white', 'legs': 4}
>>> print(Dog['color'])
white
>>> print (Dog['legs'])
4

Perhatikan bahwa penulisan key pada dictionary selalu diapit oleh single quote ‘ ‘. Key merupakan kunci untuk kita melakukan berbagai operasi pada sebuah dictionary, seperti halnya kita menggunakan indeks pada List.


Operasi Dasar pada Dictionary

Menambahkan Key-Value

Dictionary bersifat sangat dinamis, artinya kita bisa menambahkan data apa saja dan kapan saja. Misalkan kita mempunyai sebuah dictionary di awal program sebagai berikut.

>>> player_1 = {'name': 'john', 'level': 3, 'points': 10}
>>> print(player_1)
{'name': 'john', 'level': 3, 'points': 10}

Kemudian, kita ingin menambahkan posisi player_1, yaitu dalam bentuk koordinat x dan y. Caranya adalah dengan cara menyatakan nama dictionary tersebut, diikuti nama key baru dalam kurung siku, kemudian diisi dengan value-nya.

>>> player_1['pos_x'] = 0
>>> player_1['pos_y'] = 10
>>> print(player_1)
{'name': 'john', 'level': 3, 'points': 10, 'pos_x': 0, 'pos_y': 10}

Saat ditampilkan,  dictionary player_1 sudah memiliki 5 pasang key-value. Dengan karakteristik dictionary yang dinamis seperti ini, programmer bisa mendefinisikan dictionary kosong pada awal program, kemudian menambahkan key-value nya seiring dengan penambahan data baru ketika program berjalan. Dictionary kosong didefinisikan dengan sepasang kurung kurawal, tanpa pasangan key-value, sebagai berikut: player_2 = { }

Mengubah Nilai Key (Value)

Jika pada List, kita mengubah data dengan mengakses nomor indeks-nya, maka pada dictionary, kita mengubah value, dengan mengakses key-nya.

>>> player_1 = {'name': 'john', 'level': 3, 'points': 10, 'pos_x': 0, 'pos_y': 10}
>>> print(player_1)
{'name': 'john', 'level': 3, 'points': 10, 'pos_x': 0, 'pos_y': 10}

>>> player_1['level'] = 4
>>> player_1['points'] = 25
>>> player_1['pos_x'] = 10
>>> print(player_1}
{'name': 'john', 'level': 4, 'points': 25, 'pos_x': 10, 'pos_y': 10}

Pada contoh di atas, mengubah value sama dinamisnya seperti kita menambah data baru, yakni dengan menyebut nama key yang ingin diubah nilainya.

Menghapus Key-Value

Perintah del yang kita gunakan untuk menghapus data pada List, dapat gunakan untuk menghapus key-value pada sebuah dictionary. Perhatikan contoh berikut.

>>> player_1 = {'name': 'john', 'level': 3, 'points': 10, 'pos_x': 0, 'pos_y': 10}
>>> print(player_1)
{'name': 'john', 'level': 3, 'points': 10, 'pos_x': 0, 'pos_y': 10}

>>> del player_1['pos_x']
>>> del player_1['pos_y']
>>> print(player_1)
{'name': 'john', 'level': 3, 'points': 10}

Looping pada Dictionary

Sebuah dictionary dapat berisi beberapa data saja seperti contoh di atas, namun juga bisa memiliki puluhan bahkan ratusan data. Untuk itu, kita dapat menggunakan looping untuk mengakses data pada dictionary, lagi-lagi dengan menggunakan key dan value.

Looping dengan Key-Value

Di bawah ini contoh program untuk menampilkan key dan value sebuah dictionary satu per satu.

Contoh Dictionary
Looping Key-Value pada Dictionary

Dictionary user di atas memiliki 4 pasang key-value. Pada baris ke-6, kita menggunakan looping for, yang bermakna untuk setiap item dalam dictionary user, tampilkan ke layar. Pada bagian awal statement for, kita menggunakan variable key dan val untuk menampung nilai key-value yang dikembalikan oleh method items(), kemudian nilai variable tersebut ditampilkan ke layar menggunakan perintah print.

Looping dengan Key

Selain method items(), dictionary juga mempunyai method keys() yang dapat digunakan jika kita ingin looping dan mengambil nama key saja, tanpa value. Perhatikan contoh berikut.

Dictionary Keys
Looping Keys pada Dictionary

Dalam contoh di atas, sebuah dictionary favorite_lang berisi pasangan key-value yang mewakili hasil survey, yakni nama peserta yang mengikuti survey sebagai key dan bahasa pemrograman yang paling disukai peserta survey sebagai value-nya. Pada baris ke-6, favorite_lang.keys() mengembalikan semua key yang dimiliki oleh dictionary favorite_lang. Karena key tersebut berupa nama-nama peserta, maka digunakan nama variable yang sesuai untuk menyimpannya, yakni name. Baris ke-7 menampilkan nilai dari variable name, yakni nama peserta survey.

Looping dengan Value

Untuk mengambil value-nya saja, dictionary mempunyai method values(). Mari kita lihat contoh di bawah ini.

Dictionary Values
Looping Values pada Dictionary

Pada baris ke-6, looping for menggunakan favorite_lang.values() yang mengembalikan nilai-nilai atau values pada dictionary favorite_lang, yakni jenis-jenis bahasa pemrograman. Variable lang digunakan untuk menyimpan hasil tersebut, untuk kemudian digunakan pada perintah print di bawahnya.


Jika kita perhatikan, methodmethod pada contoh di atas, baik itu method keys() maupun values(), keduanya mengembalikan data pada dictionary apa adanya. Data yang dihasilkan tidak terurut dan tidak memperhatikan adanya duplikasi. Kalau kebutuhan program memang seperti itu, tentunya tidak menjadi masalah. Namun, Python telah menyediakan 2 fungsi yang bisa kita manfaatkan, jika ingin mendapatkan hasil yang lebih teratur. Untuk mengurutkan tampilan data, kita bisa memanfaatkan function sorted() yang dulu pernah dipelajari pada tutorial mengenai List. Sementara untuk menghilangkan duplikasi sekaligus mengurutkan tampilan data, Python menyediakan function set(). Di bawah ini diberikan 2 contoh program, masing-masing menggunakan function sorted() dan set().

Sorted
Contoh Function Sorted

Pada contoh pertama di atas, hasil yang dikembalikan oleh favorite_lang.keys() di sorted() terlebih dahulu, sebelum di simpan ke variable name untuk ditampilkan.

Contoh Function Set
Contoh Function Set

Pada contoh ke-2, hasil yang dikembalikan oleh favorite_lang.values() di set() terlebih dahulu sebelum disimpan ke variable lang, sehingga tidak ada bahasa pemrograman yang sama ketika ditampilkan, meskipun sebetulnya ada values yang sama pada dictionary.

Pahamilah kedua contoh di atas, dan bila perlu, tambahkan data key-values pada dictionary favorite_lang, dan jalankan ulang program tersebut.


Nesting

Nesting merupakan istilah untuk penyimpanan data berlapis, di mana kumpulan dictionary bisa berada dalam sebuah list, atau sebaliknya, sebuah dictionary yang menyimpan data berupa list. Mari kita bahas 3 variasi dari nesting satu per satu.

Dictionary dalam List

Misalkan kita mempunyai sebuah dictionary yang menyimpan informasi tentang seorang player, mulai dari nama, score, level dan seterusnya, untuk pengembangan sebuah program game. Dan ternyata, game tersebut bisa dimainkan lebih dari satu player. Lalu bagaimana cara menyimpan informasi beberapa player agar menjadi satu kumpulan pemain? Salah satu caranya, kita dapat membuat sebuah list yang berisi kumpulan informasi atau dictionary tiap-tiap player. Perhatikan contoh program di bawah ini.

List of Dictionary
Contoh List Berisi Dictionary

Pada program di atas, player_1, player_2, dan player_3 adalah dictionary. Ketiga dictionary tersebut digabungkan ke dalam sebuah list bernama players, untuk memudahkan proses program selanjutnya. Baris ke-7 dan ke-8 merupakan looping untuk menelusuri dan menampilkan tiap data (dictionary) pada list players.

Kita berandai-andai, ketika game sedang berlangsung, bertambah lagi satu pemain yang ‘online‘, yakni pemain ke-4. Kita dapat menyimpan informasi tentang pemain baru tersebut ke dalam dictionary player_4, kemudian kita tambahkan player_4 ke list players yang sudah ada. Perhatikan contohnya dalam program berikut.

Append List
Contoh method Append

Dari program di atas, kita bisa melihat bagaimana flexibilitas penggunaan list of dictionary untuk skenario multi player game. Biasanya cara ini digunakan, kalau kita ingin menyimpan beberapa objek yang sama, namun masing-masing objek memiliki informasi berbeda. Contohnya list of users, list of cars, dan sebagainya.

List dalam Dictionary

Pada skenario lain, ada kalanya menyimpan list dalam sebuah dictionary lebih sesuai. Sebagai contoh, seorang user memiliki informasi berupa: username, firstname, lastname, dan hobby. Informasi user tersebut dapat kita simpan dalam sebuah dictionary bernama user. Dan karena seorang user bisa memiliki hobby lebih dari satu, maka hobby disimpan dalam bentuk list. Jika diterjemahkan ke dalam sebuah program, hasilnya sebagai berikut.

List in Dictionary
Contoh List dalam Dictionary

Pada contoh di atas, user[‘hobby’] adalah sebuah list berisi hobby. Baris ke-6 dan baris ke-7 adalah looping untuk menampilkan setiap pasang key-value dari dictionary user yang disimpan dalam variable key dan val. Di baris ke-7, kita menggunakan fungsi str(), karena perintah print hanya menerima parameter String, sementara value pada dictionary user tidak semuanya berupa String, namun ada 1 buah list yakni ‘hobby’. Jika ingin mengakses hobby pertama dari user Marthin Stevenson, tentu saja kita bisa menggunakan indexing seperti layaknya kita mengakses data pada sebuah listJadi, user[‘hobby’][0] adalah Swimming, dan user[‘hobby’][1] adalah Soccer.

Dictionary dalam Dictionary

Dalam Python, sebuah dictionary bisa menjadi data dari dictionary lainnya. Kita ambil contoh, misalkan dalam sebuah program, kita memiliki beberapa user, dan setiap user memiliki username yang unik, sehingga username ini kita jadikan key. Mari simak program berikut.

Nested Dictionary
Contoh Dictionary dalam Dictionary

Pada program di atas, setiap user dalam dictionary users memiliki jenis informasi yang sama, yakni memiliki firstname, lastname, dan location. Jika salah satu user memiliki informasi yang kurang atau lebih dari itu, tentunya cara mengakses dictionary dalam dictionary tersebut menjadi lebih kompleks, (perlu penambahan if statement dan seterusnya).

Dictionary users memiliki 2 pasang key-values, yakni key berupa username mstevenson dan jpaul. Masing-masing key (username) menyimpan value sebuah dictionary, yang berisi informasi terkait username tersebut. Pada baris ke-14, masing-masing key disimpan pada variable username, dan value atau informasi dari user tersebut disimpan dalam variable user_info. Variable user_info berisi sebuah dictionary, yang memiliki 3 buah key, dan masing-masing nilai key tersebut ditampilkan pada baris ke-15 hingga baris ke-18. Salin dan running-lah program di atas, untuk lebih memahaminya.

Memahami nesting ini sangatlah penting. Dalam membuat program, programmer perlu menentukan, struktur data apa yang sesuai dengan model objek dan informasi yang ingin disimpan. Di saat yang sama, struktur data tersebut sebaiknya dibuat sesederhana mungkin, agar program lebih efisien dan mudah dipahami.


Berbagai tipe data yang di-support oleh Python telah kita bahas, mulai dari tipe data sederhana seperti numerik dan String, hingga yang kompleks seperti nested dictionary. Pada tutorial selanjutnya, kita akan belajar variasi looping lainnya, yakni looping while. Selain itu, kita juga akan membuat program menjadi lebih interaktif, sehingga dapat menerima input dari user.

What do you think? Leave a Comment Below.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Up ↑

%d bloggers like this: