List dan Dictionary di Python untuk Pemula
Program sungguhan jarang mengolah satu data saja. List menyimpan daftar yang berurutan, dictionary menyimpan data berdasarkan namanya. Keduanya akan kamu pakai setiap hari.
Oleh Afa Hernandes5 menit baca
Daftar isi
Sejauh ini setiap variabel menyimpan satu nilai. Tapi aplikasi pencatat pengeluaran menyimpan banyak catatan, toko online menyimpan banyak produk, dan setiap produk punya banyak keterangan: nama, harga, stok. Untuk itu Python punya dua wadah yang paling sering dipakai:
- List: daftar nilai yang berurutan, diakses dengan nomor urut. Contohnya daftar harga di keranjang belanja.
- Dictionary: kumpulan pasangan kunci dan nilai, diakses dengan nama kuncinya. Contohnya data satu produk: nama, harga, stok.
Di akhir tutorial ini kamu akan menggabungkan keduanya untuk menghitung total pengeluaran per kategori. Semua contoh diuji dengan Python 3.13.
List: daftar yang berurutan
List ditulis dengan kurung siku, isinya dipisah koma:
belanja = ["kopi", "roti", "susu"]
print(belanja)print(belanja[0])print(belanja[2])print(belanja[-1])print(len(belanja))['kopi', 'roti', 'susu']kopisusususu3- Setiap item punya indeks (nomor urut) yang dimulai dari 0, jadi
belanja[0]adalah item pertama. - Indeks negatif menghitung dari belakang.
belanja[-1]selalu item terakhir. len()menghitung jumlah item.
Mengubah isi list
belanja = ["kopi", "roti"]
belanja.append("susu") # tambah di akhirbelanja.insert(0, "gula") # sisipkan di posisi 0belanja[1] = "kopi susu" # ganti item di indeks 1belanja.remove("roti") # hapus berdasarkan isinyaprint(belanja)
terakhir = belanja.pop() # ambil dan hapus item terakhirprint(terakhir, belanja)
print("gula" in belanja) # cek keberadaan['gula', 'kopi susu', 'susu']susu ['gula', 'kopi susu']TrueMengulang, mengurutkan, dan mengambil potongan
harga = [18000, 25000, 30000, 12000]
for h in harga: print(h)
print("Total:", sum(harga))print("Termurah:", min(harga), "Termahal:", max(harga))print("Urut:", sorted(harga))print("Dua pertama:", harga[:2])18000250003000012000Total: 85000Termurah: 12000 Termahal: 30000Urut: [12000, 18000, 25000, 30000]Dua pertama: [18000, 25000]sorted() menghasilkan list baru yang terurut tanpa mengubah aslinya. harga[:2] disebut slicing: mengambil item dari awal sampai sebelum indeks 2.
Dictionary: data berdasarkan nama
Kalau setiap nilai punya arti yang berbeda, nomor urut jadi membingungkan. Apa arti catatan[1]? Dictionary menyimpan nilai dengan nama (kunci):
catatan = { "keterangan": "Kopi susu", "jumlah": 18000, "kategori": "makan",}
print(catatan["keterangan"])print(catatan["jumlah"])
catatan["jumlah"] = 20000 # ubah nilaicatatan["tanggal"] = "2026-11-16" # tambah kunci baruprint(catatan)print(len(catatan))Kopi susu18000{'keterangan': 'Kopi susu', 'jumlah': 20000, 'kategori': 'makan', 'tanggal': '2026-11-16'}4Kunci biasanya berupa teks dan harus unik. Mengisi kunci yang sudah ada akan mengganti nilainya.
Mengakses dengan aman dan mengulang
produk = {"nama": "Kopi susu", "harga": 18000}
print(produk.get("stok")) # tidak ada: None, tanpa errorprint(produk.get("stok", 0)) # tidak ada: pakai nilai bawaan 0
for kunci, nilai in produk.items(): print(f"{kunci}: {nilai}")
print("harga" in produk)None0nama: Kopi susuharga: 18000Trueproduk["stok"] akan menghasilkan error karena kuncinya tidak ada. produk.get("stok", 0) mengembalikan nilai bawaan. Pakai .get() kalau kunci yang dicari mungkin tidak ada.
Menggabungkan keduanya: list berisi dictionary
Inilah pola yang paling sering kamu temui: list berisi dictionary. Setiap dictionary adalah satu data, dan list adalah kumpulannya. Bentuk ini sama dengan data aplikasi pencatat pengeluaran di tutorial aplikasi pertama, dan juga bentuk data yang dikirim kebanyakan API di internet.
pengeluaran = [ {"keterangan": "Kopi susu", "jumlah": 18000, "kategori": "makan"}, {"keterangan": "Bensin", "jumlah": 30000, "kategori": "transport"}, {"keterangan": "Makan siang", "jumlah": 25000, "kategori": "makan"}, {"keterangan": "Parkir", "jumlah": 5000, "kategori": "transport"}, {"keterangan": "Pulsa", "jumlah": 50000, "kategori": "tagihan"},]
# total per kategori, disimpan di dictionaryper_kategori = {}for c in pengeluaran: kat = c["kategori"] per_kategori[kat] = per_kategori.get(kat, 0) + c["jumlah"]
for kat, total in per_kategori.items(): print(f"{kat:<10} Rp{total:,}".replace(",", "."))
print("Total semua:", f"Rp{sum(c['jumlah'] for c in pengeluaran):,}".replace(",", "."))
# pengeluaran terbesarterbesar = max(pengeluaran, key=lambda c: c["jumlah"])print("Terbesar:", terbesar["keterangan"])makan Rp43.000transport Rp35.000tagihan Rp50.000Total semua: Rp128.000Terbesar: PulsaBaris kuncinya adalah per_kategori[kat] = per_kategori.get(kat, 0) + c["jumlah"]. Artinya: ambil total kategori ini sejauh ini (atau 0 kalau belum ada), tambahkan jumlah catatan ini, lalu simpan lagi. Pola menghitung per kelompok ini sangat sering dipakai.
max(..., key=lambda c: c["jumlah"]) mencari item dengan jumlah terbesar. lambda adalah function kecil tanpa nama. Untuk sekarang, cukup baca sebagai “bandingkan berdasarkan jumlahnya”.
List atau dictionary?
| Pakai list kalau… | Pakai dictionary kalau… |
|---|---|
| Urutan penting | Setiap nilai punya nama atau arti berbeda |
| Isinya sejenis (semua harga, semua nama) | Kamu mencari berdasarkan nama, bukan posisi |
| Kamu sering menambah di akhir dan mengulang semuanya | Kamu menyimpan keterangan tentang satu hal |
Dalam praktik, keduanya hampir selalu dipakai bersama, seperti contoh pengeluaran di atas.
Error yang sering muncul
IndexError: list index out of range
Indeks melebihi jumlah item. List berisi 3 item punya indeks 0, 1, dan 2, jadi belanja[3] tidak ada. Ingat: indeks dimulai dari 0.
KeyError: 'stok'
Kunci yang diminta tidak ada di dictionary. Periksa ejaannya (huruf besar dan kecil dibedakan), atau pakai .get().
ValueError: list.remove(x): x not in list
remove() dipanggil untuk nilai yang tidak ada di list. Cek dulu dengan if nilai in daftar:.
Panduan membaca pesan error secara lengkap ada di membaca pesan error Python.
Latihan
- Buat list berisi 5 nilai ujian, lalu tampilkan rata-ratanya (petunjuk:
sum()danlen()) dan nilai tertingginya. - Tambahkan kategori
"hiburan"ke data pengeluaran di atas, lalu tampilkan kategori dengan total terbesar.
Kesimpulan
List menyimpan data yang berurutan dan diakses dengan indeks mulai dari 0. Dictionary menyimpan data berdasarkan kunci. Gabungkan keduanya, berupa list berisi dictionary, untuk menyimpan kumpulan data seperti catatan pengeluaran atau daftar produk, lalu olah dengan perulangan.
Langkah berikutnya di jalur Mulai Ngoding dari Nol: keterampilan yang akan kamu pakai setiap hari, yaitu membaca pesan error.



