Lompati ke konten utama
Modul 3 · Pelajaran 3 dari 411/36 dalam kursus~12 min
Pelajaran modul (3/4)

Kamus

kamus (dict) adalah peta kunci → nilai: Anda mengaitkan kunci (hampir selalu berupa string) dengan nilai jenis apa pun. Ini adalah hal mendasar struktur data untuk memodelkan entitas dunia nyata.

Membuat kamus

Python
vuoto = {}
utente = {"nome": "Ada", "anni": 36, "attivo": True}
# costruttore alternativo
utente = dict(nome="Ada", anni=36, attivo=True)

Kunci harus hashable (tidak dapat diubah): string, angka, tupel hashable elemen. Nilai, di sisi lain, bisa berupa apa saja – bahkan diktat lain.

Akses, ubah, hapus

Python
utente["nome"]            # 'Ada'
utente["email"]           # KeyError!
utente.get("email")       # None       (default sicuro)
utente.get("email", "—")  # '—'        (default custom)
utente["citta"] = "Roma"  # aggiunge / aggiorna
del utente["attivo"]      # rimuove

Mengulangi dikt

Python
for chiave in utente:               # itera sulle CHIAVI (default)
    print(chiave, utente[chiave])

for chiave in utente.keys():        # esplicito
    ...

for valore in utente.values():
    print(valore)

for chiave, valore in utente.items():    # idiom più comune
    print(f"{chiave} = {valore}")

Urutan iterasi adalah urutan penyisipan (dijamin sejak Python 3.7 dan seterusnya).

Apakah kuncinya ada?

Python
"nome" in utente     # True
"email" in utente    # False     (NON usa il valore, usa la chiave!)

setdefault: inisialisasi pada akses pertama

Pola yang sering terjadi: "jika kuncinya tidak ada, masukkan defaultnya; di mana saja case mengembalikan nilai saat ini".

Python
gruppi = {}
for nome in ["Ada", "Linus", "Ada", "Grace", "Linus", "Ada"]:
    gruppi.setdefault(nome, []).append(1)
# {'Ada': [1, 1, 1], 'Linus': [1, 1], 'Grace': [1]}

Ada juga collections.Counter untuk kasus penghitungan tertentu (kita akan melihatnya di modul stdlib).

Mengulangi kamus

Anda dapat mengulangi kamus dengan berbagai cara:

  • for k in d: hanya mengulang kunci (perilaku default).
  • for k, v in d.items(): mengulang pasangan nilai kunci secara bersamaan (sangat berguna).
  • for v in d.values(): hanya mengulang nilai saja.

Cobalah

Latihan#python.m3.l3.e1
Upaya: 0Memuat…

Diberikan `user = {'nome': 'Ada', 'anni': 36}`, tambahkan kunci 'email' = 'ada@ex.com' dan kemudian tetapkan ke `email_or_default` nilai kunci 'telefono' menggunakan .get dengan default 'sconosciuto'. Evaluasi `email_or_default`.

Memuat editor…
Tunjukkan petunjuk

.get('telefono', 'sconosciuto') tidak memunculkan KeyError.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#python.m3.l3.e2
Upaya: 0Memuat…

Diberikan `harga = {'mela': 1.2, 'pera': 1.5, 'kiwi': 2.0}`, hitung jumlah semua nilai dan tetapkan ke `total`. Evaluasi `total`.

Memuat editor…
Tunjukkan petunjuk

sum(prices.values()) menjumlahkan semua nilai.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#python.m3.l3.e3
Upaya: 0Memuat…

Given the dictionary `user = {'name': 'Alice'}`, use the `.get()` method to retrieve the value of the key `'role'`. If the key does not exist, make it return the default value `'guest'`. Store the result in `user_role` and evaluate it.

Memuat editor…
Tunjukkan petunjuk

Metode get menerima parameter kedua sebagai cadangan: user.get('role', 'guest').

Solusi tersedia setelah 3 upaya