pythonlistdictPemula4 mnt baca

List, Tuple, dan Dictionary

Tiga wadah data terpenting Python. Kuasai ini dan kamu sudah siap pegang dataset beneran.

Tiga wadah data: kenapa satu tidak cukup?

Bayangkan dapur. Kamu butuh keranjang belanja (isinya bisa tambah dan kurang), toples kaca yang disegel (isinya tetap, tidak boleh diubah), dan laci berlabel (setiap barang punya nama). Satu wadah tidak cukup karena tiap kebutuhan punya sifat berbeda. Python punya tiga wadah utama dengan sifat berbeda: list (bisa diubah, berurutan), tuple (dikunci, berurutan), dan dictionary (berlabel lewat kunci).

Kenapa konsep ini ada? Karena variabel biasa cuma menyimpan satu nilai, sedangkan analisis data selalu berurusan dengan banyak nilai yang saling berhubungan: 30 nilai ujian, satu baris CSV dengan 12 kolom, 10.000 transaksi. Tanpa wadah, kamu butuh 10.000 nama variabel. Tiga wadah ini menutupi hampir semua kebutuhan: list untuk urutan item sejenis, tuple untuk paket nilai yang tidak boleh berubah, dan dict untuk data berlabel yang mirip baris tabel. Kuasai ketiganya dan kamu siap memegang dataset beneran.

Contoh 1: list, dari dasar sampai operasi sehari-hari

python
nilai = [85, 90, 78, 92]
print(nilai[0])    # 85, indeks mulai dari 0
print(nilai[-1])   # 92, indeks negatif = dari belakang
nilai.append(88)   # tambah di akhir
nilai[1] = 95      # ubah item (list memang boleh diubah)
print(len(nilai))  # 5

Slicing mengambil potongan, dan loop memproses tiap item:

python
print(nilai[1:3])  # [95, 78], dari indeks 1 sampai sebelum 3

total = 0
for n in nilai:
    total += n
print("Rata-rata:", total / len(nilai))

Method list yang paling sering dipakai analyst: append() (tambah), remove() (hapus berdasar nilai), sort() (urutkan), count() (hitung kemunculan). Hafalkan empat ini dulu, sisanya bisa dicari saat butuh.

Tuple: list yang dikunci

Tuple mirip list tapi tidak bisa diubah (immutable), ditulis dengan kurung biasa:

python
koordinat = (106.8, -6.2)
# koordinat[0] = 0  -> TypeError! tuple tidak bisa diubah

# Tuple enak untuk unpacking: pecah jadi beberapa variabel sekaligus
lintang, bujur = koordinat
print(lintang, bujur)  # 106.8 -6.2

Kenapa ada wadah yang sengaja tidak bisa diubah? Justru itu kelebihannya: data yang dikunci aman dari perubahan tidak sengaja. Pakai tuple untuk data tetap: koordinat, konfigurasi, pasangan nilai yang selalu bersama. Di pandas nanti, nama kolom dan bentuk data sering dikembalikan sebagai tuple karena memang tidak boleh diubah.

Catatan teknis: Karena immutable, tuple bisa dipakai sebagai kunci dictionary sedangkan list tidak bisa. Contohnya koordinat sebagai kunci: {(106.8, -6.2): "Jakarta"}. Trik kecil yang berguna saat mengelompokkan data lokasi.

Contoh 2: dictionary dan list of dicts (pola data analyst)

Dictionary menyimpan pasangan kunci-nilai dalam kurung kurawal. Ini struktur yang paling mirip satu baris tabel:

python
siswa = {
    "nama": "Rina",
    "umur": 20,
    "nilai": 88,
}
print(siswa["nama"])       # Rina
siswa["kota"] = "Bandung"  # tambah kunci baru
siswa["nilai"] = 90        # ubah nilai kunci yang ada
print(siswa.get("kota"))   # Bandung

Sekarang versi realistisnya: sekumpulan baris data sebagai list of dicts, lalu diagregasi. Ini pola yang dipakai setiap hari, sebelum maupun sesudah kenal pandas.

python
penjualan = [
    {"produk": "Kopi", "jumlah": 10, "harga": 15000},
    {"produk": "Teh", "jumlah": 7, "harga": 8000},
    {"produk": "Kopi", "jumlah": 5, "harga": 15000},
]

# Total omzet per produk
rekap = {}
for item in penjualan:
    p = item["produk"]
    subtotal = item["jumlah"] * item["harga"]
    rekap[p] = rekap.get(p, 0) + subtotal

for produk, omzet in rekap.items():
    print(f"{produk}: Rp{omzet:,}")

Pola rekap.get(p, 0) artinya "ambil nilai lama, atau 0 kalau kuncinya belum ada". Ini jurus standar mengelompokkan data dengan dictionary, versi manual dari yang nanti dilakukan groupby di pandas.

Kapan pakai yang mana?

  • List: kumpulan item sejenis yang urutannya penting (daftar nilai, daftar transaksi).
  • Tuple: data tetap yang tidak boleh berubah (koordinat, konfigurasi).
  • Dict: data berlabel seperti record atau baris tabel (satu siswa, satu transaksi).

Kesalahan umum pemula

SALAH: Mengakses indeks di luar panjang list.

python
nilai = [85, 90]
print(nilai[2])   # IndexError: list index out of range

BENAR: Indeks terakhir selalu len(list) - 1. Kalau tidak yakin, cek dulu:

python
nilai = [85, 90]
if len(nilai) > 2:
    print(nilai[2])

SALAH: Mengakses kunci dictionary yang tidak ada.

python
siswa = {"nama": "Rina"}
print(siswa["kota"])   # KeyError: 'kota'

BENAR: Pakai .get() yang aman, dengan nilai default kalau perlu:

python
print(siswa.get("kota"))            # None, tidak error
print(siswa.get("kota", "Jakarta")) # Jakarta sebagai default

SALAH: Mengubah tuple seperti list.

python
titik = (1, 2)
titik[0] = 5   # TypeError: 'tuple' object does not support item assignment

BENAR: Butuh diubah? Pakai list. Tuple memang untuk data tetap:

python
titik = [1, 2]
titik[0] = 5   # jalan, karena list bisa diubah

SALAH: Menyalin list dengan = lalu heran kenapa dua-duanya berubah.

python
a = [1, 2, 3]
b = a        # b BUKAN salinan, b menunjuk ke list yang sama!
b.append(4)
print(a)     # [1, 2, 3, 4], a ikut berubah

BENAR: Pakai .copy() untuk salinan beneran:

python
a = [1, 2, 3]
b = a.copy()
b.append(4)
print(a)     # [1, 2, 3], a aman
print(b)     # [1, 2, 3, 4]

SALAH: Lupa koma di dictionary multi-baris lalu bingung dengan error aneh.

python
siswa = {
    "nama": "Rina"
    "umur": 20   # SyntaxError: koma setelah "Rina" ketinggalan
}

BENAR: Setiap pasangan kunci-nilai dipisah koma:

python
siswa = {
    "nama": "Rina",
    "umur": 20,
}

Tantangan

Rata-rata nilai kelas

Buat list berisi 5 dictionary, masing-masing dengan kunci "nama" dan "nilai". Hitung rata-rata nilai memakai loop, lalu print nama siswa dengan nilai di atas rata-rata.