
Belajar Python 7
Perulangan untuk Melihat Data di Dict
oleh: Suryo Adhy Chandra, ST
Dict memiliki data dalam bentuk pasangan key dan value. Saat melakukan perulangan pada dict, kita bisa membaca key saja, value saja, atau keduanya sekaligus.
Saat membuka rapor, kamu melihat daftar mata pelajaran dan nilainya berdampingan. Itulah bentuk alami dict: setiap nilai punya label. Kalau kita ingin membuat laporan dari data seperti itu, misalnya menghitung total nilai, mencari mata pelajaran terbaik, atau mencetak semuanya dalam tabel, kita perlu cara untuk menelusuri dict dari awal sampai akhir. Cara menelusuri dict sedikit berbeda dari list karena ada dua bagian yang bisa kita ambil: key dan value.
Bab ini memperdalam materi sebelumnya dengan contoh yang lebih bermanfaat. Kamu akan menjumlahkan semua value, menyaring pasangan berdasarkan syarat, mengurutkan key, menghitung kemunculan kata (teknik yang dipakai aplikasi sungguhan), membaca dict di dalam dict, serta mengenali kesalahan khas saat menelusuri dict.
1. Melihat semua key
2. Melihat semua value
3. Melihat key dan value sekaligus
Cara paling lengkap adalah memakai items(). Dengan ini kita bisa mendapatkan key dan value dalam satu perulangan.
4. Contoh output yang lebih rapi
Kode di atas memakai f-string, yaitu cara mudah menggabungkan teks dengan isi variabel di Python.
5. Contoh dict berisi nilai pelajaran
.keys() untuk key, .values() untuk value, dan .items() untuk key dan value sekaligus.6. Menjumlahkan semua value
Ketika hanya angkanya yang kita butuhkan, telusuri values() dan tambahkan ke variabel penampung. Hasilnya bisa dipakai untuk mencari rata-rata.
Total 90 + 85 + 88 adalah 263. Rata-ratanya 263 dibagi 3 sama dengan 87,666..., yang dibulatkan oleh round(..., 2) menjadi dua angka di belakang koma, yaitu 87.67.
7. Menyaring pasangan dengan syarat
Karena items() memberi key dan value sekaligus, kita bisa menaruh if di dalamnya untuk memilih pasangan tertentu. Fungsi max() dengan argumen key=nilai.get mencari key yang value-nya paling besar.
Hanya matematika (90) dan ipa (88) yang memenuhi syarat 88 ke atas, sedangkan bahasa (85) dilewati. Baris berikutnya membandingkan semua key berdasarkan value-nya dan mengembalikan key dengan value terbesar, yaitu matematika.
8. Menelusuri key secara berurutan
Secara bawaan, dict ditelusuri menurut urutan pemasukan data. Kalau ingin urut abjad, bungkus dict dengan sorted().
9. Menghitung kemunculan kata
Salah satu pemakaian dict yang paling terkenal adalah menghitung seberapa sering sesuatu muncul. Key diisi kata, sedangkan value diisi jumlahnya. Method split() memecah kalimat menjadi list kata.
Kunci triknya ada pada hitung.get(kata, 0) + 1. Jika kata belum pernah dicatat, get mengembalikan 0 sehingga hasilnya 1. Jika sudah ada, jumlah lama ditambah satu. Karena "bola" muncul dua kali, jumlahnya menjadi 2.
10. Dict di dalam dict
Pada setiap putaran, nama_kelas berisi key luar ("7A"), sedangkan info berisi dict kecil milik kelas itu. Untuk mengambil bagian dalamnya, kita pakai kurung siku lagi, seperti info['wali']. Perhatikan tanda petik di dalam f-string memakai jenis yang berbeda dari tanda petik pembungkusnya.
11. Kesalahan yang sering terjadi
for k, v in siswa: menghasilkan ValueError: too many values to unpack (expected 2), karena perulangan langsung pada dict hanya memberi key. Gunakan siswa.items().del d[k] di dalam for k in d: menghasilkan RuntimeError: dictionary changed size during iteration. Telusuri salinannya dengan list(d) bila ingin menghapus.for k in d.values(), variabel k berisi value, bukan key. Memanggil k.upper() pada value berupa angka menghasilkan AttributeError: 'int' object has no attribute 'upper'.k + v dengan v berupa angka menghasilkan TypeError: can only concatenate str (not "int") to str. Pakai koma pada print atau f-string.12. Ringkasan
for k in dmemberi key,d.values()memberi value,d.items()memberi keduanya.- Variabel penampung dan
ifbisa dipakai di dalam perulangan dict seperti pada list. get(kunci, 0) + 1adalah pola standar untuk menghitung kemunculan.- Jangan menambah atau menghapus isi dict ketika sedang menelusurinya.
13. Latihan
- Dari dict
harga = {"pensil": 2000, "buku": 8000, "penghapus": 1500}, cetak setiap barang dan harganya dengan formatpensil: 2000.Lihat jawaban
for barang, nominal in harga.items(): print(f"{barang}: {nominal}")Keluarannya tiga baris sesuai urutan dict:pensil: 2000,buku: 8000,penghapus: 1500. - Hitung total harga semua barang pada dict di atas.
Lihat jawaban
total = 0 for nominal in harga.values(): total += nominal print(total)Keluarannya11500. - Cetak hanya nama barang yang harganya di atas 1800.
Lihat jawaban
for barang, nominal in harga.items(): if nominal > 1800: print(barang)Keluarannyapensildanbuku. - Hitung berapa kali huruf muncul dalam kata "ayam" memakai dict.
Lihat jawaban
hitung = {} for huruf in "ayam": hitung[huruf] = hitung.get(huruf, 0) + 1 print(hitung)Keluarannya{'a': 2, 'y': 1, 'm': 1}.