Sitelet https://www.datacamp.com/id/tutorial/python-keyerror
Lewati ke konten utama

Pengecualian Python KeyError dan Cara Memperbaikinya

Pelajari teknik utama seperti penanganan pengecualian dan pencegahan kesalahan untuk menangani pengecualian KeyError di Python secara efektif.
Diperbarui 28 Sep 2026  · 6 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Bahkan programmer paling berpengalaman pun bisa membuat kesalahan saat menulis kode. Bagi programmer Python, kesalahan ini umumnya termasuk dalam dua kategori: error atau exception.

Error terutama terkait dengan sintaks. Error harus diperbaiki agar program dapat dijalankan. Exception, di sisi lain, terjadi ketika kodenya benar secara sintaks, tetapi sesuatu mengganggu jalannya program saat dieksekusi. 

Dalam tutorial ini, kita akan melihat salah satu exception yang paling sering ditemui baik oleh programmer baru maupun berpengalaman: pengecualian KeyError. Kita akan membahas detail KeyError di Python, memberikan contoh, serta berbagai teknik untuk menangani jenis pengecualian ini. Jika Anda ingin mempelajari cara mengidentifikasi dan memperbaiki kesalahan di Python, lihat juga tutorial kami Penanganan Exception & Error di Python. 

Apa itu Pengecualian KeyError?

Di Python, pengecualian KeyError adalah salah satu pengecualian bawaan yang dirancang untuk menangani berbagai kondisi kesalahan umum. Pengecualian KeyError dapat dipahami sebagai subclass, bersama dengan IndexError, dari pengecualian LookupError yang lebih umum, yang semuanya merupakan objek dari kelas Exception.

Secara khusus, pengecualian KeyError muncul ketika seorang programmer mencoba mengakses kunci yang tidak ada di dalam dictionary. Dictionary, sebagai referensi, adalah struktur data yang menyimpan data dalam pasangan kunci-nilai, dan nilai dalam dictionary diakses melalui kuncinya — karenanya disebut KeyError. 

Penyebab Umum dan Contoh KeyError di Python

Mari kita lihat contoh menggunakan dictionary negara dan ibu kotanya:

dictionary_capitals = {'Madrid': 'Spain',
 'Lisboa': 'Portugal', 'London': 'United Kingdom'}

Untuk mencari informasi dalam dictionary kita, kita perlu menyebutkan kuncinya di dalam tanda kurung siku dan Python akan mengembalikan nilai yang terkait.

dictionary_capitals['Madrid']
'Spain'

Jika kita mencoba mengakses kunci yang tidak ada di dictionary, Python akan menampilkan pesan error pengecualian KeyError. 

dictionary_capitals['Rome']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Rome'

Kita juga bisa menemui pengecualian KeyError saat mencoba mengakses kunci yang tidak ada pada objek pemetaan (mapping) Python lain yang mengadopsi bentuk dictionary. Sebagai contoh, objek os.environ mengembalikan dictionary yang menyimpan variabel lingkungan pengguna sebagai kunci beserta nilai yang terkait.

Pada kode berikut, kita mencoba mengakses nilai yang terkait dengan kunci USERS di dictionary os.environ. Karena USERS tidak ada di dictionary os.environ, kode kita menghasilkan KeyError.

#Calling a non-existent environmental variable
os.environ['USERS']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'USERS'

Ternyata, dictionary sangat umum digunakan di Python. Contoh lainnya adalah implementasi sesuatu yang lebih abstrak bernama hashmap. Lihat tutorial Panduan Hashmap di Python kami untuk mempelajari lebih lanjut tentang hashmap.

Menangani Pengecualian KeyError di Python

Mari jelajahi metode untuk menangani pengecualian KeyError. Kita punya dua strategi: Mencegah KeyError atau menangkap KeyError dengan penanganan error. 

Mencegah KeyError

Seperti yang telah kita lihat, Python akan melempar KeyError jika kita mengakses kunci yang tidak ada. Untuk mencegahnya, kita dapat mengakses kunci dalam dictionary menggunakan metode .get() agar kode kita lebih toleran terhadap error. Jika, saat menggunakan metode ini, kita menemui kunci yang tidak ada, Python akan mengembalikan nilai None alih-alih KeyError. Ini adalah pendekatan yang baik.

print(dictionary_capitals.get('Prague'))
None

Sebagai alternatif, kita bisa memeriksa apakah sebuah kunci ada sebelum mengaksesnya. Cara mencegah pengecualian ini dikenal sebagai “Look Before You Leap,” atau disingkat LBYL. Dalam kasus ini, kita bisa menggunakan pernyataan if untuk memeriksa apakah kunci tersebut ada dan, jika tidak, kita dapat menanganinya pada klausa else.

capital = "Prague"
if capital in dictionary_capitals.keys():
    value = dictionary_capitals[capital]
else:
    print("The key {} is not present in the dictionary".format(capital)) 

Menangkap KeyError dengan penanganan exception

Pendekatan kedua dikenal sebagai “Easier to Ask Forgiveness Than Permission.” EAFP, sebagaimana disebut, sebenarnya adalah cara yang lebih standar untuk menangani pengecualian di Python. 

Mengadopsi gaya penulisan kode EAFP berarti kita mengasumsikan keberadaan kunci yang valid dan menangkap pengecualian jika asumsi tersebut salah. Sementara pendekatan LBYL kita bergantung pada pernyataan if/else, pendekatan EAFP bergantung pada klausa try/except. 

Pada contoh berikut, alih-alih memeriksa apakah kuncinya ada, kita mencoba mengakses kunci yang diinginkan. Jika, karena suatu alasan, kuncinya tidak ada, maka kita cukup menangkap KeyError di klausa except dan menanganinya sebagaimana mestinya.

capital = "Prague"
try:
     value = dictionary_capitals[capital]
except KeyError:
     print("The key {} is not present in the dictionary".format(capital)) 

Manajemen KeyError Python Lanjutan

Menggunakan defaultdict untuk penanganan kunci otomatis

Kita melihat bahwa, setiap kali kita mencoba mengakses kunci yang tidak ada di dictionary, Python akan mengembalikan pengecualian KeyError. Metode .get() yang kita ulas merupakan pendekatan yang toleran terhadap error dan cukup bekerja, namun belum optimal.

Modul Collections menawarkan defaultdict, yang merupakan pendekatan yang lebih optimal untuk menangani entri dictionary. Berbeda dengan dictionary standar yang melempar KeyError jika kita mengakses kunci yang tidak ada, defaultdict memungkinkan kita menentukan nilai default yang dikembalikan setiap kali kunci tidak ditemukan. Kode berikut menunjukkan cara mengimpor defaultdict dari Collections dan membuat nilai default dengan fungsi lambda. Jika Anda bingung tentang fungsi lambda, lihat tutorial Python lambda kami untuk mempelajari lebih lanjut.

from collections import defaultdict 

# Defining the dict 
capitals = defaultdict(lambda: "The key doesn't exist") 
capitals['Madrid'] = 'Spain'
capitals['Lisboa'] = 'Portugal'
print(capitals['Madrid']) 
print(capitals['Lisboa']) 
print(capitals['Ankara'])
Spain
Portugal
The key doesn't exist

Dengan sengaja melempar KeyError

Terakhir, perlu disebutkan bahwa, dalam keadaan tertentu, mungkin tepat untuk dengan sengaja melempar KeyError guna menegakkan batasan tertentu.

Kita tahu bahwa, dalam banyak kasus, fungsi bergantung pada data tertentu yang tersedia untuk menjalankan operasinya. Memicu KeyError secara manual memastikan fungsi gagal dengan jelas dan dapat diprediksi ketika data yang diperlukan tidak ada. Dalam kasus ini, pesan error yang disertakan dengan KeyError membantu kita memahami persis apa yang salah dengan input yang diberikan, sehingga debugging menjadi lebih mudah.

Mari perjelas dengan contoh. Di sini kita membuat fungsi yang menerima sebuah dictionary sebagai argumen. Pengguna harus menyediakan dictionary dengan kunci yang benar agar fungsi bekerja dengan baik. Kita membuat fungsi dalam kasus ini karena kita ingin segera mengetahui jika kuncinya hilang, alih-alih membiarkan error berlanjut lebih jauh di dalam kode. 

def my_function(my_dict): 
    if 'critical_key' not in my_dict: 
        raise KeyError('critical_key is missing from the dictionary. Please modify the dictionary')

Kesimpulan

Semoga Anda menyukai artikel ini. KeyError adalah salah satu pengecualian yang paling umum ditemui pengembang Python. Menguasai seni penanganan error dan exception adalah bagian penting untuk menjadi programmer Python yang andal. Pelajari lebih lanjut tentang teknik pemrograman fungsional lainnya dan dasar-dasar ngoding dengan jalur keterampilan Python Programming dan Python Fundamentals kami. Selain itu, lihat juga tutorial Himpunan (Set) Python dan Teori Himpunan untuk mempelajari konsep terkait lainnya. 


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Saya adalah analis data lepas yang berkolaborasi dengan perusahaan dan organisasi di seluruh dunia dalam proyek ilmu data. Saya juga instruktur ilmu data dengan pengalaman lebih dari 2 tahun. Saya rutin menulis artikel terkait ilmu data dalam bahasa Inggris dan Spanyol, beberapa di antaranya telah diterbitkan di situs tepercaya seperti DataCamp, Towards Data Science, dan Analytics Vidhya. Sebagai ilmuwan data dengan latar belakang ilmu politik dan hukum, tujuan saya adalah bekerja pada irisan kebijakan publik, hukum, dan teknologi, memanfaatkan kekuatan gagasan untuk mendorong solusi serta narasi inovatif yang dapat membantu kita menghadapi tantangan mendesak, khususnya krisis iklim. Saya menganggap diri saya seorang autodidak, pembelajar sepanjang hayat, dan pendukung kuat pendekatan multidisipliner. Tidak pernah ada kata terlambat untuk mempelajari hal baru.

Topik
Python
Analisis Data

Belajar Python bersama DataCamp

Kursus

Menulis Kode Python yang Efisien

4 jam
156.1K
Pelajari cara menulis kode efisien yang berjalan cepat dan mengalokasikan sumber daya dengan terampil untuk menghindari overhead yang tidak perlu.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya