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 Sumberimport 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 ---
SitiCoba 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 Sumberdata_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:
RinaCoba 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 Sumberstok = {"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: 4Coba 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.
- Dictionary mengakses nilai menggunakan …
- Apa hasil {1, 1, 2}?
- Operasi untuk item yang ada di dua set adalah …
- Apa manfaat data.get("nama", "Tidak ada")?
- Apakah urutan tampilan set dapat dijadikan dasar program?
Latihan Mandiri
Latihan 13-L01 – Kontak sederhana
Dasar. Buat dictionary Ayu: 081234 dan Budi: 085678. Cetak nomor Ayu.
Kerjakan di IDE Unduh LatihanHasil 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 SolusiLatihan 13-L02 – Buah unik
Penerapan. Ubah ["apel", "jeruk", "apel"] menjadi set, lalu cetak jumlah item unik.
Kerjakan di IDE Unduh LatihanHasil 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 SolusiLatihan 13-L03 – Peserta bersama
Pengembangan. Cari nama yang ada di {"Ayu", "Budi"} dan {"Budi", "Citra"}. Cetak hasil terurut.
Kerjakan di IDE Unduh LatihanHasil 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 SolusiPengembangan
Kegiatan Tambahan
Susun buku kontak menggunakan dictionary dengan nama sebagai kunci dan nomor telepon sebagai nilai. Implementasikan fungsi CRUD (Create, Read, Update, Delete).
Diberikan dua list nama teman:
teman_lama = ["Andi", "Budi", "Citra"] teman_baru = ["Budi", "Dedi", "Eka"]Gunakan operasi set untuk:
- Menemukan semua teman unik dari kedua list (gabungan)
- Menemukan teman yang ada di kedua list (irisan)
- Menemukan teman yang hanya ada di
teman_lamatapi tidak diteman_baru(selisih) - Menemukan teman yang hanya ada di
teman_barutapi tidak diteman_lama
Buat daftar siswa, masing-masing dengan dictionary berisi nama dan nilai. Simpan dalam list. Hitung rata-rata nilai semua siswa.
Tulis program kecil untuk mencari informasi mahasiswa berdasarkan NPM dalam dictionary.
Buat dictionary berisi kode bandara (kunci) dan nama kota (nilai). Tampilkan semua pasangan data dengan iterasi.
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.
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 menggunakandiscard()(coba hapus buah yang tidak ada dengandiscard()).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:
- Menemukan angka-angka yang ada di kedua list (irisan)
- Menemukan semua angka unik dari gabungan kedua list tersebut
- Menemukan angka-angka yang ada di
list_satutapi tidak ada dilist_dua - Menemukan angka-angka yang ada di
list_duatapi tidak ada dilist_satu - Menemukan angka-angka yang ada di salah satu list saja (tidak di keduanya)
Gunakan dictionary comprehension untuk:
- Membuat dictionary dari list angka 1-10 dengan key = angka, value = angka kuadrat
- Filter dictionary tersebut hanya untuk angka genap saja
Gunakan set comprehension untuk:
- Membuat set karakter unik dari string “programming”
- Membuat set angka ganjil dari range(1, 20)
Dari studi kasus “Sistem Inventaris Toko Buku Sederhana” yang telah dibuat:
- Tambahkan fungsi
cari_buku_berdasarkan_genre(genre_dicari)yang menerima satu string genre dan mengembalikan list buku (dictionary) yang memiliki genre tersebut. - Tambahkan fungsi
update_stok_buku(isbn_buku, jumlah_baru)yang memperbarui jumlah stok buku berdasarkan ISBN-nya. Pastikan buku ada sebelum update. - Panggil fungsi-fungsi baru tersebut dengan beberapa contoh data.
- Tambahkan fungsi
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
- Dictionary di Python: Pasangan Key-Value
- Set di Python: Koleksi Nilai Unik
- get() Dictionary di Python: Ambil Nilai Tanpa KeyError
- union(), intersection(), difference() di Python: Operasi Himpunan
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.
