For AI agents: use /llms.txt for the Nakafa content index.
Dictionary adalah pemetaan yang dapat diubah dari kunci unik ke nilai. Alih-alih meminta item berdasarkan posisi angka, kamu mencarinya melalui kunci yang bermakna seperti nama, pengenal, atau tanggal.
Python menyediakan beberapa cara untuk membuat dictionary, mulai dari yang kosong hingga yang sudah berisi data.
# Membuat dictionary kosong
a = {}
b = dict()
print("Dictionary kosong a:", a)
print("Dictionary kosong b:", b)
# Output: Dictionary kosong a: {}
# Output: Dictionary kosong b: {}
# Membuat dictionary dengan data
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'dan': 999}
print("Dictionary phone:", phone)
# Output: Dictionary phone: {'ann': 110, 'bob': 991, 'cat': 112, 'dan': 999}
# Membuat dictionary bersarang
person = {1: {'name': 'ann', 'age': 23}, 2: {'name': 'bob', 'age': 21}}
print("Dictionary bersarang:", person)
# Output: Dictionary bersarang: {1: {'name': 'ann', 'age': 23}, 2: {'name': 'bob', 'age': 21}}
# Membuat dictionary dengan constructor
month = dict([(1, 'Jan'), (2, 'Feb'), (3, 'Mar')])
mass = dict(Mercury=3.3e23, Venus=4.9e24, Earth=6.0e24)
print("Dictionary month:", month)
print("Dictionary mass:", mass)
# Output: Dictionary month: {1: 'Jan', 2: 'Feb', 3: 'Mar'}
# Output: Dictionary mass: {'Mercury': 3.3e23, 'Venus': 4.9e24, 'Earth': 6.0e24}Tampilan dictionary memakai kurung kurawal. Koma memisahkan setiap entri, sedangkan titik dua memisahkan kunci dari nilainya. Tampilan kosong {} membuat dictionary kosong.
# Sintaks dasar dictionary
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'don': 999}
print(phone)
# Output: {'ann': 110, 'bob': 991, 'cat': 112, 'don': 999}Kunci harus hashable, sehingga nilai yang tidak berubah seperti string, angka, dan tuple yang sesuai lazim dipakai. Nilai dictionary boleh berupa objek Python apa pun, termasuk dictionary lain.
Dictionary termasuk container karena menyimpan kumpulan objek lain. Perilaku utamanya adalah memetakan setiap kunci ke satu nilai sambil mempertahankan urutan pertama kali kunci disisipkan.
List dan tuple mengatur item berdasarkan posisi, sedangkan dictionary mengatur entri berdasarkan kunci. Perbedaan ini menentukan cara kamu membaca, memperbarui, dan mengiterasi isinya.
Dictionary dapat diubah, kuncinya unik dan hashable, serta urutan iterasinya mengikuti urutan penyisipan kunci.
Spesifikasi bahasa Python menjamin urutan penyisipan dictionary sejak Python 3.7. Menetapkan nilai baru ke kunci yang sudah ada memperbarui entri tanpa memindahkan kuncinya. Jika kunci dihapus lalu disisipkan kembali, posisinya berpindah ke akhir.
# Urutan penyisipan dipertahankan
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'bob': 999}
print(phone)
# Output: {'ann': 110, 'bob': 999, 'cat': 112}
# Kunci 'bob' tetap di posisi kedua meski nilainya diubahKarena kunci bersifat unik, kunci berulang dalam tampilan dictionary hanya menyimpan nilai terakhir yang diberikan. Kunci yang bertahan tetap menempati posisi yang ditetapkan oleh kemunculan pertamanya.
Dictionary mengambil nilai berdasarkan kunci, bukan indeks angka yang berurutan.
# Mengakses nilai dengan kunci
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'dan': 999}
# Mengambil nilai
print(phone['cat'])
# Output: 112
# Menggunakan variabel sebagai kunci
name = 'bob'
print(phone[name])
# Output: 991
# Menambah atau mengubah nilai
phone['bob'] = 999 # Mengubah nilai kunci yang ada
phone['eve'] = 111 # Menambah kunci baru
print(phone)
# Output: {'ann': 110, 'bob': 999, 'cat': 112, 'dan': 999, 'eve': 111}Akses kurung siku mengambil nilai yang sudah ada. Penugasan dengan kurung siku memperbarui kunci lama atau menambahkan pasangan kunci-nilai baru ke urutan penyisipan.
Pilih bentuk iterasi sesuai kebutuhanmu: kunci saja, nilai saja, atau kedua bagian setiap entri.
# Iterasi kunci dictionary
phone = {'ann': 110, 'bob': 999, 'cat': 112, 'dan': 999}
for key in phone:
print(key, phone[key])
# Output:
# ann 110
# bob 999
# cat 112
# dan 999Ketika kamu mengiterasi dictionary secara langsung, Python mengambil kunci-kunci dalam urutan penyisipannya.
# Iterasi pasangan kunci-nilai dengan items()
phone = {'ann': 110, 'bob': 999, 'cat': 112, 'dan': 999}
for key, val in phone.items():
print(key, val)
# Output:
# ann 110
# bob 999
# cat 112
# dan 999View items() menghasilkan kunci dan nilai bersama-sama, sehingga tuple unpacking dapat memberi nama keduanya dalam satu perulangan.
Dictionary menyediakan view dinamis untuk kunci, nilai, dan pasangan kunci-nilainya.
# Menggunakan metode dictionary
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'dan': 999}
# Mendapatkan semua kunci
keys = phone.keys()
print("Kunci:", list(keys))
# Output: Kunci: ['ann', 'bob', 'cat', 'dan']
# Mendapatkan semua nilai
values = phone.values()
print("Nilai:", list(values))
# Output: Nilai: [110, 991, 112, 999]
# Mendapatkan pasangan kunci-nilai
items = phone.items()
print("Items:", list(items))
# Output: Items: [('ann', 110), ('bob', 991), ('cat', 112), ('dan', 999)]Metode tersebut mengembalikan objek view dinamis, bukan list. View mencerminkan perubahan berikutnya pada dictionary dan dapat diiterasi, tetapi tidak mendukung indeks posisi atau penugasan item. Panggil list() hanya ketika kamu memang memerlukan snapshot list yang terpisah.
Gunakan get() ketika kunci yang tidak ada merupakan keadaan wajar dan kamu menginginkan nilai pengganti. Gunakan akses kurung siku ketika kunci yang hilang seharusnya dianggap sebagai error.
# Masalah mengakses kunci yang tidak ada
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'dan': 999}
try:
print(phone['pat'])
except KeyError as e:
print("KeyError:", e)
# Output: KeyError: 'pat'Mengindeks dictionary dengan kunci yang tidak ada akan menghasilkan error KeyError.
# Menggunakan metode get() untuk akses aman
phone = {'ann': 110, 'bob': 991, 'cat': 112, 'dan': 999}
# get() mengembalikan None jika kunci tidak ada
result = phone.get('pat')
print("Hasil get('pat'):", result)
# Output: Hasil get('pat'): None
# get() dengan nilai default
result = phone.get('pat', -1)
print("Hasil get('pat', -1):", result)
# Output: Hasil get('pat', -1): -1
# get() untuk kunci yang ada
result = phone.get('ann')
print("Hasil get('ann'):", result)
# Output: Hasil get('ann'): 110get() mengembalikan nilai tersimpan ketika kuncinya ada. Jika tidak, metode ini mengembalikan nilai default yang diberikan, atau None bila tidak ada default. Pilih default yang tidak dapat tertukar dengan nilai valid ketika perbedaannya penting.