Materi
Gudang sebuah toko daring kecil mencatat semua kejadian dalam log teks: barang masuk dan keluar, setiap unit yang terjual, dan setiap paket yang siap dikirim. Pemiliknya ingin tiga laporan yang tetap cepat ketika log tumbuh menjadi ratusan ribu baris: stok akhir setiap kode barang, k barang terlaris, dan urutan pengiriman yang mendahulukan layanan kilat.
Setiap laporan cocok dengan satu struktur dari modul ini. Stok akhir adalah penjumlahan per kunci, pekerjaan dict. Barang terlaris adalah penghitungan per kunci lalu pengambilan k teratas, pekerjaan Counter dan heapq. Urutan pengiriman adalah antrean prioritas dengan pemecah seri, karena dua paket kilat harus keluar sesuai urutan masuknya.
| Laporan | Operasi yang paling sering | Struktur |
|---|---|---|
| Stok akhir | Tambah ke kunci yang mungkin belum ada | dict dengan get(kode, 0) |
| k terlaris | Hitung per kunci, ambil k teratas | Counter lalu heapq.nsmallest dengan key |
| Urutan kirim | Ambil prioritas tertinggi berulang kali | heapq dengan (prioritas, nomor, resi) |
Log stok berupa daftar tuple (kode, jumlah), dengan jumlah negatif untuk barang keluar. Log penjualan berupa daftar kode, satu kode untuk satu unit terjual. Log pengiriman berupa kejadian ("masuk", resi, layanan) dengan layanan kilat atau reguler, dan ("kirim",) untuk mengirim satu paket berikutnya.