Dictionary

Sekarang kita akan membahas struktur data terakhir yang perlu kita pahami dalam Python, yaitu dictionary. Dictionary adalah objek pemetaan (mapping) yang memetakan objek-objek yang memiliki nilai hash (hashable) ke sebarang objek. Semua objek pemetaan memiliki karakteristik mutable, yaitu bisa diubah. Artinya, kita bisa mengubah elemen-elemen di dalam dictionary. [Fou21d]

Karena dictionary memetakan suatu nilai ke nilai yang lain, maka suatu elemen dalam dictionary terdiri dari 2 jenis: key dan value.

  • key, adalah tipe data yang hashable, yang berarti antara angka, string, atau tuple, yang berfungsi sebagai indeks.

  • value, adalah objek sebarang tipe data yang melekat pada satu key tertentu.

List vs Dictionary

Untuk list, kita bisa mengakses suatu elemen dengan menggunakan indeks yang dimulai dari 0 sampai dengan n-1 atau negatif indeks yang dimulai dari -n sampai -1. Dictionary juga mengizinkan kita untuk mengakses elemen, umumnya value, dengan menggunakan suatu indeks. Hanya saja, pada dictionary, kita menggunakan key untuk mengakses suatu value.

Sebagai contoh, misalkan kita ingin mencatat data tinggi badan beberapa orang sebagai berikut: 166, 169, 172. Kita bisa saja membuat sebuah list yang berisi 3 data tersebut yang kemudian bisa kita akses dengan indeks. Akan tetapi, kita juga ingin memasangkan data tinggi badan tersebut dengan nama orang yang bersangkutan. Dengan menggunakan dictionary, kita bisa masangkan nama orang dan tinggi badan orang tersebut dengan pemetaan berikut:

  • john166

  • stuart169

  • kevin -> 171

Kemudian, jika kita ingin mengakses data pertama, alih-alih kita menuliskan height[0] untuk list, kita bisa dengan jelas memasukkan nama orang yang sudah berfungsi sebagai key dan menggunakannya sebagai indeks semacam height["john"].

Mendefinisikan Dictionary dengan {}

Perhatikan bahwa sintaks yang digunakan untuk mendefinisikan dictionary sama dengan yang digunakan untuk set. Hanya saja, penulisan elemennya yang berbeda.

Karena elemen suatu dictionary terdiri dari pasangan key dan value, kita harus menuliskan keduanya dalam satu elemen. Sintaks yang akan digunakan berbentuk: key: value dan setiap elemen atau pasangan key: value dipisahkan dengan ,.

Untuk kasus yang sama pada data tinggi badan di atas, maka kita bisa mendefinisikannya sebagai dictionary seperti di bawah ini.

height = {"john": 166, "stuart": 169, "kevin": 171}

Mari kita coba implementasi kode di atas pada cell di bawah ini.

height = {"john": 166, "stuart": 169, "kevin": 171}

print(height, type(height))
{'john': 166, 'stuart': 169, 'kevin': 171} <class 'dict'>

Jika kita ingin cari tahu berapa tinggi badan Stuart, dengan notasi indexing yang sama dengan list (var[indeks]), kita bisa langsung tulis saja

print(height["stuart"])
print(height["john"])
print(height["stuart"])
print(height["kevin"])
166
169
171

Bagaimana jika kita mendefinisikan dictionary dengan duplikat key?

height = {"john": 166, "stuart": 169, "kevin": 171, "john": 190, "Kevin": 170}

print(height)
{'john': 190, 'stuart': 169, 'kevin': 171, 'Kevin': 170}

Note

Saat kita mendefinisikan dictionary dengan memasukkan key yang sama lebih dari satu kali, maka pasangan terakhir yang akan disimpan.

Karena dictionary merupakan mutable object, kita bisa mengubah elemen pada dictionary. Untuk mengubah value pada key tertentu, kita bisa langsung menugaskan value yang baru pada key tersebut seperti di bawah ini.

height["Kevin"] = 167
# ubah value kevin dan Kevin
height["kevin"] = 180
height["Kevin"] = 167

print(height)
{'john': 190, 'stuart': 169, 'kevin': 180, 'Kevin': 167}

Mendefinisikan Dictionary dengan dict()

Python menyediakan fungsi bawaan dict() untuk mendefinisikan dictionary baru dengan cara:

  • dict() untuk dictionary kosong

  • dict(john=166, stuart=169, kevin=171) untuk mendefinisikan dictionary yang sama pada kasus sebelumnya

  • dict() untuk menginisiasi dictionary kosong, kemudian mengisi pasangan key-value satu per satu, baris per baris

# dictionary kosong
empty_dict = dict()

# cara 1
functional_dict = dict(john=166, stuart=169, kevin=171)

# cara 2
sequential_dict = dict()
sequential_dict["john"] = 166
sequential_dict["stuart"] = 169
sequential_dict["kevin"] = 171

Eksplorasi

Buatlah dictionary dengan nama population yang berisikan data berikut ini.

keys

value

Jakarta

20.8

Surabaya

18.2

Bandung

15.1

Semarang

12.3

# KETIK DI SINI

Fungsi dan Metode Bawaan Dictionary

Note

Kita hanya mencoba fungsi dan metode bawaan dictionary yang paling sering dipakai karena jumlahnya yang banyak. Untuk detail fungsi dan metode apa saja serta apa kegunaannya, silakan dilihat di halaman dokumentasi.

Beberapa fungsi dan metode bawaan yang sering dipakai disajikan pada tabel di bawah ini.

name

function/method

usage

example

keys

method

return a sequence of dictionary’s keys

height.keys()

values

method

return a sequence of dictionary’s values

height.values()

items

method

return a sequence of tuple of key and value pair for first and second index, respectively

height.items()

get

method

return a value of the key passed into get if exist. If not, choose to provide a default value or not

height.get("kevin")

len

function

return the length or number of element in dictionary

len(height)

update

method

update the corresponding dictionary with new key-value pair, if the key is already exist, update the value instead

height.update({"kevin": 190"})

print(height.keys())
dict_keys(['john', 'stuart', 'kevin', 'Kevin'])
print(height.values())
dict_values([190, 169, 180, 167])
print(height.items())
dict_items([('john', 190), ('stuart', 169), ('kevin', 180), ('Kevin', 167)])
print(height.get("Kevin"))
print(height.get("michael"))
print(height.get("michael", "Oops. Key not found!"))
167
None
Oops. Key not found!
height.update({"michael": 177, "kevin": 190})
print(height)
{'john': 190, 'stuart': 169, 'kevin': 190, 'Kevin': 167, 'michael': 177}