Cara Memeriksa apakah Kunci Ada dalam Kamus Python

Pelajari cara memeriksa apakah ada kunci di kamus Python. Bandingkan operator in, metode get(), setdefault, dan penanganan pengecualian KeyError.

Coba Solusi ini di Editor

Ikhtisar

Saat berinteraksi dengan kamus yang diisi secara dinamis—seperti penguraian parameter pengguna, penggantian konfigurasi, data API, atau payload JSON—mencoba mengambil nilai menggunakan kunci yang tidak ada akan memunculkan `KeyError` dan membuat aplikasi Anda mogok. Oleh karena itu, penerapan pemeriksaan defensif sangatlah penting.

Cara paling langsung, pythonic, dan tercepat untuk memeriksa apakah ada kunci adalah menggunakan operator keanggotaan `in`: `if key in my_dict:`. Ekspresi ini mengembalikan `True` jika kunci ditemukan, dan `False` jika sebaliknya. Di balik terpalnya, kamus Python diimplementasikan menggunakan tabel hash, membuat pemeriksaan keanggotaan menjadi sangat optimal, berjalan dalam kompleksitas waktu rata-rata O(1).

Alternatifnya, jika Anda ingin mengambil nilai kunci namun kembali ke nilai default jika kuncinya hilang, Anda dapat menggunakan metode `.get(key, default)`. Jika kuncinya ada, ia mengembalikan nilainya; jika tidak, ia akan mengembalikan nilai default Anda (atau `Tidak Ada` jika dihilangkan) tanpa memunculkan `KeyError` atau memerlukan pernyataan bersyarat.

Kode & Output Eksekusi

Skrip ini mendemonstrasikan verifikasi keberadaan kunci menggunakan operator in, metode fallback get(), dan menangani pengecualian KeyError.

check_dict_keys.py
Coba di Editor
user = {"id": 101, "name": "Alice", "role": "admin"}

# 1. Checking key existence using the 'in' operator (Recommended)
if "role" in user:
    print("Found 'role' key. Value is:", user["role"])

if "email" not in user:
    print("'email' key is missing.")

# 2. Retrieving value safely using get() with a fallback
email_address = user.get("email", "no-email@example.com")
print("Email address:", email_address)

# 3. Handling KeyError exception manually
try:
    invalid_lookup = user["location"]
except KeyError:
    print("Caught KeyError: 'location' key does not exist.")
Keluaran Terminal
Found 'role' key. Value is: admin
'email' key is missing.
Email address: no-email@example.com
Caught KeyError: 'location' key does not exist.

Implementasi Langkah demi Langkah

  • Gunakan operator in (misalnya, jika kunci dalam kamus :) untuk pemeriksaan keberadaan kunci standar.
  • Gunakan operator not in untuk memeriksa apakah ada kunci yang hilang dari struktur kamus.
  • Panggil kamus.get(key, default_value) untuk mengambil nilai dengan aman sambil memberikan fallback default.
  • Gabungkan pencarian langsung dalam blok coba-kecuali KeyError saat menangani kunci yang hilang dalam integrasi pihak ketiga.

Pertanyaan yang Sering Diajukan

Berapa kompleksitas waktu untuk memeriksa apakah ada kunci dalam kamus?

Ini adalah O(1) kompleksitas waktu rata-rata karena kamus menggunakan tabel hash, membuat waktu pencarian konstan berapa pun ukurannya.

Bisakah saya memeriksa apakah ada nilai di kamus?

Ya, tetapi Anda harus mencari tampilan nilai: jika nilai di my_dict.values():. Perhatikan bahwa pemeriksaan nilai memerlukan waktu linier O(N) karena Python harus melintasi setiap elemen dalam kamus.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.