Menu

Dictionary di Python: membuat, mengakses, mengubah, dan melakukan iterasi dict

Dictionary adalah struktur pencarian key-value di Python, tipe data yang akan terus kamu pakai begitu sudah melewati dasar-dasarnya.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Dictionary adalah tabel pencarian

List diindeks berdasarkan posisi. Dictionary diindeks berdasarkan key, biasanya string atau angka, dan setiap key dipetakan ke sebuah nilai. Satu perubahan itu membuka banyak sekali jenis program: inventaris, konfigurasi, payload JSON, profil pengguna, cache.

Key dan nilainya bisa hampir apa saja. Key harus hashable (jadi: angka, string, tuple; bukan list atau dict lain). Nilainya tidak punya batasan: sebuah dict bisa menyimpan apa pun, termasuk dict atau list lain.

Membuat dictionary

Ada beberapa cara, masing-masing punya tempatnya:

Membaca nilai

Ada dua cara, dan pilihannya penting:

Pilih sesuai tujuanmu:

  • Pakai [] kalau key itu harus ada. Kalau tidak ada, berarti ada bug dan kamu ingin error yang jelas.
  • Pakai .get() kalau "tidak ada" adalah kasus yang wajar. Dengan begitu kamu bisa menulis nilai default tanpa try/except.

Menambah, mengubah, menghapus

Assignment ke sebuah key akan membuat key itu atau memperbaruinya:

update() menggabungkan dict lain atau iterable berisi pasangan:

Key yang sama di overrides menimpa key yang ada di settings.

Mengecek keberadaan key

in mengecek key, bukan nilai:

Untuk mengecek nilai secara khusus, pakai user.values():

Cara melakukan iterasi pada dictionary

Ada tiga view yang bisa kamu jadikan target perulangan:

.items() adalah yang paling sering kamu pakai: ia memberimu pasangannya, sudah dibongkar, siap dipakai.

Urutan iterasi di Python modern (3.7+) sama dengan urutan saat dimasukkan. Dict bukan "kantong ajaib": kalau kamu menambahkan a, lalu b, lalu c, iterasinya menghasilkan urutan yang sama. Itu jaminan bahasa yang bisa kamu andalkan.

Cara mengurutkan dictionary

Dictionary mempertahankan urutan saat item dimasukkan, jadi "mengurutkan" dict sebenarnya berarti membuat dict baru yang key-nya dimasukkan sesuai urutan yang kamu inginkan:

sorted() mengembalikan list berisi pasangan; membungkusnya dengan dict(...) membangun kembali dictionary dengan urutan yang baru. Kalau kamu hanya butuh pasangan yang sudah diurutkan (bukan dict), lewati pemanggilan dict() di luarnya.

Cara menggabungkan dua dictionary

Python 3.9+ memberimu operator |:

Kalau ada key yang sama, nilai dari dict di sebelah kanan yang menang. .update() adalah padanannya yang langsung mengubah dict aslinya. Di versi Python yang lebih lama, pakai {**defaults, **overrides}.

Pola setdefault

Kebutuhan yang umum: "kalau key-nya ada, pakai nilainya; kalau tidak, isi nilai default lalu pakai."

Atau, lebih baik lagi, pakai collections.Counter:

Counter adalah subclass dict yang secara default melakukan penghitungan. Itulah pilihan yang tepat setiap kali kamu menghitung kemunculan sesuatu.

Dictionary comprehension

Mirip list comprehension, tapi untuk membuat dict:

Aturannya sama dengan list comprehension, tapi dengan key: value di antara kurung kurawal.

Dict, kembaran JSON

Dict Python hampir persis sejajar dengan objek JSON. Mengonversi di antara keduanya hanya butuh satu pemanggilan:

Inilah kenapa dict muncul di mana-mana dalam pengembangan web: request dan response API-mu pada dasarnya adalah manipulasi dict dengan jaringan di tengahnya.

Contoh praktis

Program kecil mirip konfigurasi yang menyimpan profil pengguna:

Dict bersarang, nilai yang bisa diubah, .get() dengan nilai default: perlengkapan dasar untuk data apa pun yang berbentuk rekaman.

Lanjut

List, tuple, set, dict. Dengan keempat koleksi itu, kamu bisa memodelkan hampir semua data yang akan kamu temui di awal. Berikutnya, kita akan mempelajari list comprehension, cara ringkas Python untuk mengubah satu koleksi menjadi koleksi lain.

Pertanyaan yang sering diajukan

Apa itu dictionary di Python?

Dictionary adalah kumpulan pasangan key-value. Kamu mencari sebuah nilai lewat key-nya, prices['apple'], bukan prices[0]. Dictionary cepat dibaca dan ditulis, key-nya harus unik, dan di Python modern dictionary mempertahankan urutan saat item dimasukkan.

Bagaimana cara menambahkan key ke dictionary Python?

Lakukan assignment: my_dict['new_key'] = 'new value'. Kalau key itu sudah ada, nilainya ditimpa. Kalau belum, key itu ditambahkan. Tidak ada perbedaan antara "menyisipkan" dan "memperbarui": sintaksnya sama.

Apa bedanya dict[key] dan dict.get(key)?

dict[key] memunculkan KeyError kalau key itu tidak ada. dict.get(key) justru mengembalikan None (atau nilai default yang kamu berikan). Pakai .get() kalau key yang tidak ada memang wajar dan diperkirakan; pakai [key] kalau key yang tidak ada berarti bug.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai