- Bab 7 dari 11
- 30 menit
- 1 latihan kode
- 4 soal kuis
Struktur Data: List, Tuple, Set, dan Dictionary
Di bab ini (9 bagian)
Tujuan bab ini
- Membedakan list, tuple, set, dan dictionary beserta sifat masing-masing.
- Mengakses data dengan indeks, indeks negatif, slicing, dan kunci dictionary.
- Mengolah data dengan
append,remove,len,sum, list comprehension,items(), danget(). - Memilih struktur data yang tepat untuk sebuah kebutuhan.
Kenapa butuh struktur data
Satu variabel biasanya menyimpan satu nilai. Lalu bagaimana kalau kamu harus menyimpan nilai 30 siswa satu kelas? Membuat nilai1, nilai2, sampai nilai30 jelas melelahkan, dan kamu tidak bisa me-loop variabel seperti itu.
Struktur data adalah "wadah" untuk menyimpan banyak nilai dalam satu nama. Python punya empat wadah bawaan, dan masing-masing punya kepribadian sendiri.
| Struktur | Contoh | Berurutan | Bisa diubah | Duplikat |
|---|---|---|---|---|
| List | [1, 2, 3] | ya | ya | boleh |
| Tuple | (1, 2, 3) | ya | tidak | boleh |
| Set | {1, 2, 3} | tidak | ya | tidak boleh |
| Dictionary | {"a": 1} | urutan masuk dijaga | ya | kunci harus unik |
Sejak Python 3.7, dictionary menjaga urutan kunci sesuai urutan dimasukkan, tapi isinya tetap diakses lewat kunci, bukan nomor urut.
List: wadah serbaguna
List adalah struktur data yang paling sering kamu pakai. Analoginya seperti playlist: berurutan, bisa ditambah, dihapus, dan lagu yang sama boleh muncul dua kali.
Indeks dan indeks negatif
Setiap item punya nomor posisi yang disebut indeks, dimulai dari 0, bukan 1. Indeks negatif menghitung dari belakang: -1 adalah item terakhir.
| Item | 85 | 90 | 100 |
|---|---|---|---|
| Indeks positif | 0 | 1 | 2 |
| Indeks negatif | -3 | -2 | -1 |
Mengakses indeks yang tidak ada, misalnya nilai[3], memicu IndexError: list index out of range.
Slicing
Slicing mengambil sebagian list dengan pola [a:b]: dari indeks a sampai b - 1, sama seperti aturan range.
Kalau a dikosongkan berarti dari awal, kalau b dikosongkan berarti sampai akhir. Angka ketiga adalah langkah, dan [::-1] adalah trik populer untuk membalik urutan.
Fungsi dan method yang sering dipakai
len menghitung jumlah item, sum menjumlahkan, max dan min mencari nilai terbesar dan terkecil. Method lain yang berguna: insert(i, x) untuk menyisipkan, pop() untuk mengambil sekaligus menghapus item terakhir, dan sort() untuk mengurutkan.
List comprehension
List comprehension adalah cara singkat membuat list baru dari perulangan dalam satu baris.
Bacanya: "ambil x ** 2 untuk setiap x di range(5)". Versi panjangnya adalah membuat list kosong lalu append di dalam for. Hasilnya sama, tapi comprehension lebih ringkas. Bagian if di akhir berfungsi sebagai filter.
Tuple: list yang dikunci
Tuple mirip list, tapi tidak bisa diubah setelah dibuat (immutable). Cocok untuk data yang memang tidak boleh berubah, seperti koordinat atau tanggal lahir.
Mencoba lokasi[0] = 0 akan memicu TypeError. Sifat ini justru menguntungkan: kamu yakin datanya tidak berubah diam-diam di bagian lain program.
Set: tanpa duplikat
Set hanya menyimpan nilai unik dan tidak punya urutan, jadi tidak bisa diakses dengan indeks.
Set sangat berguna untuk membuang duplikat dan mengecek keanggotaan dengan cepat. Hati-hati: {} kosong menghasilkan dictionary, bukan set. Untuk set kosong pakai set().
Dictionary: pasangan kunci dan nilai
Dictionary menyimpan data sebagai pasangan kunci: nilai, seperti kontak di HP: kamu mencari berdasarkan nama, bukan nomor urut.
Output loop:
items() menghasilkan pasangan kunci dan nilai sekaligus, jadi cocok dipakai di for. Ada juga keys() untuk kunci saja dan values() untuk nilai saja.
get(): akses yang aman
Mengakses kunci yang tidak ada dengan siswa["alamat"] memicu KeyError. Method get() lebih aman karena mengembalikan None atau nilai cadangan yang kamu tentukan.
Kapan memakai yang mana
| Kebutuhan | Pilihan |
|---|---|
| Daftar berurutan yang sering ditambah atau dihapus | List |
| Data tetap yang tidak boleh berubah | Tuple |
| Membuang duplikat atau cek "ada atau tidak" | Set |
| Mencari data berdasarkan nama atau label | Dictionary |
Di dunia nyata keempatnya sering digabung, misalnya list berisi dictionary untuk menyimpan data banyak siswa.
Kesalahan umum
- Mengira indeks mulai dari 1. Item pertama ada di indeks 0.
- Lupa batas slicing tidak ikut.
huruf[0:2]hanya mengambil dua item. - Membuat set kosong dengan
{}. Itu dictionary; pakaiset(). - Mengakses kunci yang tidak ada. Pakai
get()bila kuncinya belum pasti ada. removeuntuk item yang tidak ada. MemicuValueError; cek dulu denganin.
Rangkuman
- List berurutan dan bisa diubah, tuple berurutan tapi tidak bisa diubah, set tanpa duplikat dan tanpa urutan, dictionary menyimpan pasangan kunci dan nilai.
- Indeks dimulai dari 0, indeks negatif menghitung dari belakang, dan slicing
[a:b]mengambilasampaib - 1. append,remove,len, dansumadalah alat dasar mengolah list; list comprehension membuat list baru dalam satu baris.- Dictionary diakses dengan kunci;
items()memberi pasangan kunci dan nilai,get()mencegahKeyError.
Slide 17 sampai 19 dari deck Pemrograman Python: Dari Nol sampai Proyek Mini. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Rekap nilai kelas
Lengkapi fungsi rekap(nilai). Parameter nilai adalah dictionary berisi nama siswa dan nilainya, misalnya {"Rina": 92, "Andi": 64}.
Kembalikan dictionary dengan tiga kunci:
"jumlah": banyaknya siswa"rata_rata": rata-rata nilai, dibulatkan 1 angka di belakang koma denganround(..., 1)"lulus": list nama siswa dengan nilai minimal 70, sesuai urutan di dictionary
Petunjuk: pakai len, sum, values(), dan items() atau list comprehension.
Cek pemahaman
1Apa yang dicetak kode berikut?
huruf = ["a", "b", "c", "d"] print(huruf[1:3])2Struktur data mana yang otomatis membuang nilai duplikat?
3Isi tuple bisa diubah dengan menulis lokasi[0] = 5.
4Apa yang dicetak kode berikut?
siswa = {"nama": "Rina", "kelas": 11} print(siswa.get("kota", "-"))
