Dictionary
Mencari kunci yang tidak ada dalam dictionary menghentikan program dengan KeyError, tetapi d.get(key, 0) mengembalikan 0 sebagai gantinya.
Seoyeon memiliki 12 surat suara dan tiga calon
Tabel itu adalah dictionary. Dictionary menyimpan pasangan: kunci dan nilai yang terkait dengannya. Tulis di dalam kurung kurawal, dengan titik dua di antara setiap kunci dan nilainya. Untuk membaca nilai, masukkan kunci dalam kurung siku, seperti menulis indeks setelah list. Untuk menambah atau mengubah pasangan, berikan nilai pada kunci itu.
votes = {"Ari": 0, "Bo": 0, "Cy": 0}
votes["Bo"] = votes["Bo"] + 1
votes["Ari"] += 1
votes["Bo"] += 1
print(votes)
print(votes["Bo"]){'Ari': 1, 'Bo': 2, 'Cy': 0}
2Menghitung seluruh surat suara dalam satu perulangan
Mengetik satu baris per surat suara tidak lebih baik daripada turus. Seoyeon memasukkan surat suara ke list dan menelusurinya dengan perulangan. Ada satu masalah: bagaimana jika surat suara menyebut orang yang belum disiapkan sebelumnya, atau ia tidak ingin mendaftar calon lebih dahulu? Membaca kunci yang tidak ada dengan kurung siku menghentikan program. Metode get(key, default) mengatasinya. Metode ini mengembalikan nilai jika kuncinya ada, atau nilai bawaan jika tidak ada. Jadi, votes.get(name, 0) + 1 bekerja untuk suara pertama dan setiap suara setelahnya.
ballots = ["Bo", "Ari", "Bo", "Cy", "Bo", "Ari",
"Cy", "Bo", "Ari", "Bo", "Cy", "Bo"]
votes = {}
for name in ballots:
votes[name] = votes.get(name, 0) + 1
print(votes)
print(len(ballots), sum(votes.values())){'Bo': 6, 'Ari': 3, 'Cy': 3}
12 12Baris terakhir adalah pemeriksaan Seoyeon. Dua belas surat suara masuk dan jumlah hitungannya dua belas, sehingga tidak ada yang hilang. Perhatikan urutan nama pada keluaran: Bo pertama karena Bo adalah nama pertama yang ditemui perulangan. Sejak Python 3.7, dictionary mempertahankan urutan kunci saat pertama ditambahkan. Dalam bagian dictionary pada tutorial, hal yang sama dijelaskan.
Menelusuri kunci dan nilai bersama-sama
Perulangan for pada dictionary memberikan kunci. items() memberikan kunci dan nilai sekaligus, yang kamu perlukan untuk tabel hasil. in memeriksa apakah kunci ada, dan max() dengan key=votes.get menemukan kunci dengan nilai terbesar. Pola terakhir layak disalin apa adanya, bahkan sebelum setiap bagiannya dipahami.
votes = {"Bo": 6, "Ari": 3, "Cy": 3}
for name, n in votes.items():
print(name, "#" * n, n)
print("Dan" in votes)
print(max(votes, key=votes.get))Bo ###### 6
Ari ### 3
Cy ### 3
False
BoDictionary digunakan saat data berupa pasangan nama dan nilai: kata dan artinya, stasiun kereta bawah tanah dan nomor jalurnya, nomor siswa dan namanya. Kunci harus unik. Memberikan nilai pada kunci yang sudah ada mengganti nilai lamanya, bukan menambahkan salinan kedua.
| dictionary | Pasangan kunci: nilai dalam { } |
| kunci | Nama yang digunakan untuk mencari nilai; kunci bersifat unik |
| d[key] | Membaca nilai; KeyError jika kunci tidak ada |
| d.get(key, default) | Membaca nilai, atau memberikan nilai bawaan jika kunci tidak ada |
| d.items() | Pasangan kunci dan nilai untuk perulangan for |
| key in d | True jika dictionary memiliki kunci itu |
- Apa yang dicetak kode ini?
price = {"gimbap": 3500, "ramen": 4500} print(price["ramen"]) - Apa yang dicetak kode ini?
price = {"gimbap": 3500} price["tteokbokki"] = 5000 print(len(price)) - Apa yang dicetak kode ini?
price = {"gimbap": 3500} price["gimbap"] = 4000 print(price) - Apa yang dicetak kode ini?
stock = {"pens": 4} print(stock.get("pens", 0), stock.get("tape", 0)) - Apa yang terjadi saat kode ini dijalankan?
stock = {"pens": 4} print(stock["tape"])- Mencetak 0
- Mencetak None
- Mencetak tape
- Berhenti dengan KeyError: 'tape'
- Apa yang dicetak kode ini?
counts = {} for ch in "hello": counts[ch] = counts.get(ch, 0) + 1 print(counts["l"]) - Apa yang dicetak kode ini?
ages = {"Mina": 14, "Jun": 13} print("Jun" in ages, 14 in ages) - Apa yang dicetak kode ini?
d = {"b": 2, "a": 1} for k in d: print(k)a
bb
a2
1b 2
a 1
- Apa yang dicetak kode ini?
scores = {"Ari": 3, "Bo": 6, "Cy": 3} print(max(scores, key=scores.get)) - Apa yang dicetak kode ini?
d = {"x": 1, "y": 2} total = 0 for k, v in d.items(): total += v print(total)
- "votes["Dan"] memberikan 0 jika Dan tidak mendapat suara." Jika "Dan" belum pernah ditambahkan sebagai kunci, pencarian berhenti dengan KeyError: 'Dan'. Gunakan votes.get("Dan", 0) jika kunci mungkin tidak ada.
- "14 in ages memeriksa apakah ada orang berusia 14." in memeriksa kunci, bukan nilai. Untuk mencari dalam nilai, tulis 14 in ages.values().
- "Dictionary memiliki posisi seperti list, sehingga votes[0] adalah calon pertama." Dictionary dicari berdasarkan kunci, bukan posisi. votes[0] mencari kunci yang sama dengan 0 dan menghasilkan KeyError: 0.
- Dictionary menyimpan pasangan kunci: nilai dalam { }.
- d[key] membaca nilai; kunci yang tidak ada menghasilkan KeyError.
- d.get(key, default) menghindari KeyError.
- counts[x] = counts.get(x, 0) + 1 adalah pola penghitungan.
- for k, v in d.items(): menelusuri pasangan sesuai urutan penambahannya.
Sumber kursus ini (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Diperiksa: 2026-10-19