Pendamping Bab 13: Dictionary dan Set: Data Berkunci dan Nilai Unik. Gunakan nomor contoh dan latihan yang sama dengan buku.

Tujuan Belajar

  • Mengakses data melalui kunci dictionary.
  • Memilih operasi set untuk data unik.
  • Menggabungkan struktur data sesuai kebutuhan.

Persiapan

Kamu sudah memahami list, tuple, fungsi, dan perulangan. Gunakan dictionary untuk pasangan kunci-nilai dan set untuk keanggotaan unik.

Program dengan tombol Coba di IDE dapat dijalankan di browser. Untuk program lokal, unduh sumber, ekstrak ZIP, lalu ikuti README.txt.

Pembahasan

13-01 – Dictionary: Pasangan Kunci dan Nilai

Perhatikan pemakaian dumps, loads pada data contoh dan bandingkan hasilnya dengan nilai awal. Jalankan dengan Python di komputer agar format hasil sama dengan contoh buku.

Unduh Sumber
import json

data_untuk_json = {
    "nama": "Siti",
    "usia": 28,
    "hobi": ["membaca", "berkebun"],
}

# Dari dictionary ke string JSON
teks_json = json.dumps(data_untuk_json, indent=4)
# indent untuk pretty print

print("\n--- String JSON ---")
print(teks_json)

# Dari string JSON ke dictionary
dict_hasil_json = json.loads(teks_json)
print("\n--- Dictionary dari JSON ---")
print(dict_hasil_json["nama"])  # Output: Siti

Hasil yang diharapkan:


--- String JSON ---
{
    "nama": "Siti",
    "usia": 28,
    "hobi": [
        "membaca",
        "berkebun"
    ]
}

--- Dictionary dari JSON ---
Siti

Coba ubah: Ubah satu nilai pada data_untuk_json dan periksa bagian hasil yang ikut berubah.

13-02 – Dictionary: Pasangan Kunci dan Nilai

Instruksi dijalankan dari atas ke bawah; print menampilkan nilai saat instruksi itu dijalankan.

Coba di IDE Unduh Sumber
data_pengguna_sistem = {
    "user01": {
        "nama": "Rina",
        "email": "[email protected]",
        "aktif": True,
    },
    "user02": {
        "nama": "Budi",
        "email": "[email protected]",
        "aktif": False,
    },
}
print(data_pengguna_sistem["user01"]["nama"])
# Output: Rina

Hasil yang diharapkan:

Rina

Coba ubah: Ubah satu nilai pada data_pengguna_sistem dan periksa bagian hasil yang ikut berubah.

13-03 – Dictionary: Pasangan Kunci dan Nilai

Sama seperti list comprehension (Bab 12), kamu bisa membuat dictionary dengan cara singkat dan elegan.

Coba di IDE Unduh Sumber
# Cara lama: Loop biasa
angka_dict = {}
for n in range(1, 6):
    angka_dict[n] = n**2
print(angka_dict)
# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# Cara baru: Dictionary comprehension (satu baris!)
angka_dict = {n: n**2 for n in range(1, 6)}
print(angka_dict)
# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# Dengan filter (hanya angka genap)
genap_dict = {n: n**2 for n in range(1, 11) if n % 2 == 0}
print(genap_dict)
# Output: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

# Membuat dict dari 2 list dengan zip
nama = ["Andi", "Budi", "Citra"]
usia = [21, 22, 20]
profil = {n: u for n, u in zip(nama, usia)}
print(profil)
# Output: {'Andi': 21, 'Budi': 22, 'Citra': 20}

# Swap key-value
original = {"a": 1, "b": 2, "c": 3}
swapped = {v: k for k, v in original.items()}
print(swapped)
# Output: {1: 'a', 2: 'b', 3: 'c'}

Hasil yang diharapkan:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
{2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
{'Andi': 21, 'Budi': 22, 'Citra': 20}
{1: 'a', 2: 'b', 3: 'c'}

Coba ubah: Ubah satu nilai pada angka_dict dan periksa bagian hasil yang ikut berubah.

Studi Kasus

13-04 – Memeriksa persediaan buku

get memberikan stok nol untuk judul yang tidak ada. sorted membuat urutan hasil dapat diperiksa secara konsisten.

Coba di IDE Unduh Sumber
stok = {"Python Dasar": 4, "Logika": 2}
pesanan = {"Python Dasar", "Algoritma"}
for judul in sorted(pesanan):
    jumlah = stok.get(judul, 0)
    print(f"{judul}: {jumlah}")

Hasil yang diharapkan:

Algoritma: 0
Python Dasar: 4

Coba ubah: Tambahkan Algoritma dengan stok 3 dan jalankan ulang.

Rangkuman

Dictionary menyimpan pasangan kunci-nilai dan mempertahankan urutan penyisipan. Set menyimpan item unik tanpa urutan yang dapat diandalkan. Gunakan get untuk nilai bawaan dan operasi himpunan untuk membandingkan kelompok.

Cek Pemahaman

Lima pertanyaan ini sama dengan pertanyaan di buku. Periksa jawaban di kuis untuk melihat skor dan pembahasan.

  1. Dictionary mengakses nilai menggunakan …
  2. Apa hasil {1, 1, 2}?
  3. Operasi untuk item yang ada di dua set adalah …
  4. Apa manfaat data.get("nama", "Tidak ada")?
  5. Apakah urutan tampilan set dapat dijadikan dasar program?
Kerjakan Kuis

Latihan Mandiri

Latihan 13-L01 – Kontak sederhana

Dasar. Buat dictionary Ayu: 081234 dan Budi: 085678. Cetak nomor Ayu.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

081234
Lihat Petunjuk

Nomor telepon disimpan sebagai string agar nol awal tetap ada.

Lihat Solusi
kontak = {"Ayu": "081234", "Budi": "085678"}
print(kontak["Ayu"])

Kunci nama digunakan untuk mengambil nomor.

Coba Solusi di IDEUnduh Solusi

Latihan 13-L02 – Buah unik

Penerapan. Ubah ["apel", "jeruk", "apel"] menjadi set, lalu cetak jumlah item unik.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

2
Lihat Petunjuk

Konversi set menghapus duplikasi.

Lihat Solusi
buah = ["apel", "jeruk", "apel"]
unik = set(buah)
print(len(unik))

Ada dua jenis buah yang berbeda.

Coba Solusi di IDEUnduh Solusi

Latihan 13-L03 – Peserta bersama

Pengembangan. Cari nama yang ada di {"Ayu", "Budi"} dan {"Budi", "Citra"}. Cetak hasil terurut.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

['Budi']
Lihat Petunjuk

Gunakan & lalu sorted untuk tampilan stabil.

Lihat Solusi
kelas_a = {"Ayu", "Budi"}
kelas_b = {"Budi", "Citra"}
print(sorted(kelas_a & kelas_b))

Budi adalah satu-satunya anggota kedua kelompok.

Coba Solusi di IDEUnduh Solusi

Pengembangan

Kegiatan Tambahan

  1. Susun buku kontak menggunakan dictionary dengan nama sebagai kunci dan nomor telepon sebagai nilai. Implementasikan fungsi CRUD (Create, Read, Update, Delete).

  2. Diberikan dua list nama teman:

    teman_lama = ["Andi", "Budi", "Citra"]
    teman_baru = ["Budi", "Dedi", "Eka"]

    Gunakan operasi set untuk:

    1. Menemukan semua teman unik dari kedua list (gabungan)
    2. Menemukan teman yang ada di kedua list (irisan)
    3. Menemukan teman yang hanya ada di teman_lama tapi tidak di teman_baru (selisih)
    4. Menemukan teman yang hanya ada di teman_baru tapi tidak di teman_lama
  3. Buat daftar siswa, masing-masing dengan dictionary berisi nama dan nilai. Simpan dalam list. Hitung rata-rata nilai semua siswa.

  4. Tulis program kecil untuk mencari informasi mahasiswa berdasarkan NPM dalam dictionary.

  5. Buat dictionary berisi kode bandara (kunci) dan nama kota (nilai). Tampilkan semua pasangan data dengan iterasi.

  6. Simpan nilai mata kuliah per mahasiswa dalam bentuk dictionary yang berisi list:

    mahasiswa = {
        "Andi": [85, 90, 78],
        "Budi": [88, 92, 85]
    }

    Hitung rata-rata nilai setiap mahasiswa.

  7. Buat sebuah set berisi nama-nama buah. Tambahkan beberapa buah (misalnya “apel”, “jeruk”, “mangga”). Coba tambahkan buah yang sudah ada (misalnya “apel” lagi). Amati dan jelaskan hasilnya. Kemudian, hapus salah satu buah menggunakan remove() dan satu buah lain menggunakan discard() (coba hapus buah yang tidak ada dengan discard()).

  8. Diberikan dua list angka:

    list_satu = [1, 2, 3, 4, 5, 5, 2]
    list_dua = [4, 5, 6, 7, 8, 8, 4]

    Gunakan set untuk:

    1. Menemukan angka-angka yang ada di kedua list (irisan)
    2. Menemukan semua angka unik dari gabungan kedua list tersebut
    3. Menemukan angka-angka yang ada di list_satu tapi tidak ada di list_dua
    4. Menemukan angka-angka yang ada di list_dua tapi tidak ada di list_satu
    5. Menemukan angka-angka yang ada di salah satu list saja (tidak di keduanya)
  9. Gunakan dictionary comprehension untuk:

    1. Membuat dictionary dari list angka 1-10 dengan key = angka, value = angka kuadrat
    2. Filter dictionary tersebut hanya untuk angka genap saja
  10. Gunakan set comprehension untuk:

    1. Membuat set karakter unik dari string “programming”
    2. Membuat set angka ganjil dari range(1, 20)
  11. Dari studi kasus “Sistem Inventaris Toko Buku Sederhana” yang telah dibuat:

    1. Tambahkan fungsi cari_buku_berdasarkan_genre(genre_dicari) yang menerima satu string genre dan mengembalikan list buku (dictionary) yang memiliki genre tersebut.
    2. Tambahkan fungsi update_stok_buku(isbn_buku, jumlah_baru) yang memperbarui jumlah stok buku berdasarkan ISBN-nya. Pastikan buku ada sebelum update.
    3. Panggil fungsi-fungsi baru tersebut dengan beberapa contoh data.
  12. Buatlah sebuah program sederhana untuk mengelola sistem voting dengan requirements:

    • Dictionary untuk menyimpan kandidat dan jumlah suara
    • Set untuk menyimpan ID voters yang sudah vote (prevent duplicate voting)
    • Fungsi untuk: vote, lihat hasil, cek apakah voter sudah vote

Referensi dan Materi Pendamping

Langkah Selanjutnya

Bab 14 membahas Membaca dan Menyimpan Data ke File. Sebelum melanjutkan, pastikan kamu dapat menjelaskan tujuan belajar dan menyelesaikan tiga latihan inti bab ini.

Edisi September 2026. Nomor contoh, pertanyaan, dan latihan digunakan bersama pada buku dan halaman ini.

Bab 12 | Bab 14