EMZETT.
Giriş yap

KeyError ve IndexError (Python)

Kısaca: Sözlükte bir anahtar yok (KeyError) ya da bir liste indeksi listenin dışında (IndexError).

Biraz daha ayrıntılı: Her iki hata da var olmayan öğelere erişirken oluşur. Java’daki ArrayIndexOutOfBoundsException’ın akrabalarıdır.

Ayrıntılı

KeyError

age = {"Mia": 17}
print(age["Tom"])   # KeyError: 'Tom'

"Tom" anahtarı sözlükte yok. Yazım hataları ve büyük/küçük harf de sayılır. Çözümler:

  • age.get("Tom") None, age.get("Tom", 0) varsayılan bir değer döndürür.
  • Önceden kontrol et: if "Tom" in age:.
  • collections.defaultdict veya setdefault kullan.
  • JSON verilerinde gerçek anahtarları yazdır (print(data.keys())).

IndexError

numbers = [10, 20, 30]
print(numbers[3])   # IndexError: list index out of range

Geçerli indeksler 0’dan len(liste) - 1’e kadardır. Sık görülenler: döngülerde bir eksik/fazla hata (range(len(x)+1)), boş listeler, öğeler silindikten sonra yanlış indeks. Çözümler:

  • “Boş değil” için if i < len(numbers): veya if numbers: kontrol et.
  • İndeksler yerine for n in numbers: ile yinele.
  • Negatif indeksler sondan sayar: numbers[-1].
  • try/except IndexError yalnızca yokluğun beklenebileceği yerde kullan.

Sorun giderme

Traceback’teki satır numarasını oku, o satırdan önce len() veya anahtarları yazdır ve verilerin gerçekten düşündüğün gibi görünüp görünmediğini kontrol et (boş yanıt, farklı yapı, None). Hata ayıklayıcı veya doğru yerde print çok zaman kazandırır.

Ayrıca bak: ArrayIndexOutOfBoundsException, TypeError, ModuleNotFoundError