ngodingdulu
Dasar PemrogramanTutorialPemula

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:

list_dasar.py
belanja = ["kopi", "roti", "susu"]
print(belanja)
print(belanja[0])
print(belanja[2])
print(belanja[-1])
print(len(belanja))
Output
['kopi', 'roti', 'susu']
kopi
susu
susu
3
  • 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

list_ubah.py
belanja = ["kopi", "roti"]
belanja.append("susu") # tambah di akhir
belanja.insert(0, "gula") # sisipkan di posisi 0
belanja[1] = "kopi susu" # ganti item di indeks 1
belanja.remove("roti") # hapus berdasarkan isinya
print(belanja)
terakhir = belanja.pop() # ambil dan hapus item terakhir
print(terakhir, belanja)
print("gula" in belanja) # cek keberadaan
Output
['gula', 'kopi susu', 'susu']
susu ['gula', 'kopi susu']
True

Mengulang, mengurutkan, dan mengambil potongan

list_olah.py
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])
Output
18000
25000
30000
12000
Total: 85000
Termurah: 12000 Termahal: 30000
Urut: [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):

dict_dasar.py
catatan = {
"keterangan": "Kopi susu",
"jumlah": 18000,
"kategori": "makan",
}
print(catatan["keterangan"])
print(catatan["jumlah"])
catatan["jumlah"] = 20000 # ubah nilai
catatan["tanggal"] = "2026-11-16" # tambah kunci baru
print(catatan)
print(len(catatan))
Output
Kopi susu
18000
{'keterangan': 'Kopi susu', 'jumlah': 20000, 'kategori': 'makan', 'tanggal': '2026-11-16'}
4

Kunci biasanya berupa teks dan harus unik. Mengisi kunci yang sudah ada akan mengganti nilainya.

Mengakses dengan aman dan mengulang

dict_olah.py
produk = {"nama": "Kopi susu", "harga": 18000}
print(produk.get("stok")) # tidak ada: None, tanpa error
print(produk.get("stok", 0)) # tidak ada: pakai nilai bawaan 0
for kunci, nilai in produk.items():
print(f"{kunci}: {nilai}")
print("harga" in produk)
Output
None
0
nama: Kopi susu
harga: 18000
True

produk["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.py
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 dictionary
per_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 terbesar
terbesar = max(pengeluaran, key=lambda c: c["jumlah"])
print("Terbesar:", terbesar["keterangan"])
Output
makan Rp43.000
transport Rp35.000
tagihan Rp50.000
Total semua: Rp128.000
Terbesar: Pulsa

Baris 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

  1. Buat list berisi 5 nilai ujian, lalu tampilkan rata-ratanya (petunjuk: sum() dan len()) dan nilai tertingginya.
  2. 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.

Bagikan:WhatsAppTelegramXFacebook
Ilustrasi mesin bertuliskan def hitung_total yang menerima input harga dan jumlah lalu mengeluarkan hasil total
DasarTutorial

Function di Python: Memecah Masalah Jadi Kecil

Kode yang dipakai berulang kali sebaiknya ditulis sekali dan diberi nama. Function membuat program lebih pendek, lebih mudah dibaca, dan lebih mudah diperbaiki.

16 Oktober 20265 mnt

Enter bukaEsc tutupHalaman pencarian