2.9. Kamus (Dictionary)¶
Sebuah kamus adalah pemetaan dari kunci ke nilai. Setiap kunci dicari secara langsung; kamus mengingat nilai terakhir yang diasosiasikan dengan kunci tersebut.
2.9.1. Membuat kamus¶
Gunakan kurung kurawal dengan pasangan key: value, atau konstruktor dict:
empty = {}
person = {"name": "OpenMV", "id": 42}
counts = dict(a=1, b=2, c=3) # keyword form
pairs = dict([("x", 1), ("y", 2)]) # from a list of pairs
Nilai bisa bertipe apa saja -- string, angka, list, bahkan dict lainnya:
config = {
"name": "OpenMV",
"id": 42,
"width": 320,
"tags": ["red", "round"],
}
Setiap kunci dalam kamus memetakan tepat satu nilai.¶
2.9.2. Akses dan keanggotaan¶
Pengindeksan dengan [] mengambil nilai untuk sebuah kunci. Kunci yang tidak ada akan memunculkan KeyError:
>>> person = {"name": "OpenMV", "id": 42}
>>> person["name"]
'OpenMV'
>>> person["missing"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'missing'
Untuk pencarian yang lebih toleran, gunakan dict.get(). Fungsi ini mengembalikan None untuk kunci yang tidak ada, atau nilai yang Anda berikan sebagai argumen kedua:
>>> person.get("name")
'OpenMV'
>>> person.get("missing") # returns None
>>> person.get("missing", "n/a")
'n/a'
Kata kunci in menguji keanggotaan kunci -- bukan nilai:
>>> "name" in person
True
>>> "OpenMV" in person
False
2.9.3. Menambah, memperbarui, dan menghapus¶
Menugaskan ke d[key] menambahkan entri jika kuncinya baru dan menimpanya jika sudah ada:
>>> person["seen"] = 1
>>> person["seen"] = 2 # overwrites
>>> person
{'name': 'OpenMV', 'id': 42, 'seen': 2}
Penghapusan memiliki beberapa bentuk:
del d[key]-- menghapus entri; memunculkanKeyErrorjika kunci tidak ada.dict.pop()-- menghapus dan mengembalikan nilai; default opsional memungkinkan Anda menghindari exception.dict.clear()-- menghapus setiap entri.
dict.update() menggabungkan kamus lain (atau daftar pasangan (key, value)) ke dalam penerima, menimpa kunci yang cocok:
>>> person.update({"id": 100, "owner": "alice"})
>>> person
{'name': 'OpenMV', 'id': 100, 'seen': 2, 'owner': 'alice'}
2.9.4. Iterasi¶
Mengiterasi kamus secara langsung menghasilkan kunci-kuncinya, sesuai urutan penyisipan:
for k in person:
print(k)
Tiga tampilan memberikan akses eksplisit:
dict.keys()-- kunci-kuncinya (sama seperti mengiterasi dict).dict.values()-- nilai-nilainya.dict.items()-- tuple(key, value), sangat cocok untuk unpacking dalam loop.
for key, value in person.items():
print(key, "=", value)
2.9.5. Apa yang bisa menjadi kunci¶
Kunci kamus harus hashable -- nilainya tidak dapat berubah selama masa hidupnya. Tipe hashable yang umum adalah:
Tipe yang dapat diubah seperti list, dict, dan bytearray tidak dapat menjadi kunci; menggunakannya akan memunculkan TypeError. Tuple dari nilai-nilai immutable adalah cara standar untuk mengindeks kamus berdasarkan identifier komposit seperti koordinat grid 2D:
>>> grid = {}
>>> grid[(0, 0)] = "start"
>>> grid[(5, 7)] = "end"
2.9.6. Panjang¶
len() mengembalikan jumlah entri:
>>> len(person)
4