Python anahtar hatası

Python işlevleri ve meth

Var olmayan bir sözlükteki bir öğeye erişmeye çalıştığınızda bir Python KeyError ortaya çıkıyor. Var olan bir sözlükten bir öğe seçmek için programınızı değiştirerek bu hatayı düzeltebilirsiniz. Veya önce bir anahtarın olup olmadığını kontrol ederek bu hatayı çözebilirsiniz.

Az önce bir KeyError ile mi karşılaştınız? Endişelenme! Bir KeyError ortaya çıktığında, var olmayan bir sözlük içindeki bir anahtara erişmeye çalışıyorsunuz demektir. Nasıl yapılacağını bildiğiniz zaman bu hatayı vermek ve düzeltmek kolaydır.

KeyError'lar, “in” veya indekslemeyi kullanarak önceden bir anahtarı kontrol ederek.

Bu kılavuzda, Python Anahtar Hatalarının ne olduğu ve neden ortaya çıktıkları hakkında konuşacağız. Gelecekte KeyError'ları nasıl çözeceğinizi bilmeniz için bir hata örneğini ve nasıl düzeltileceğini göstereceğiz.

Haydi başlayalım!




Nedir? a Python KeyError?

Dizin oluşturma sözdizimini kullanarak sözlükte var olmayan bir öğeye erişmeye çalıştığınızda bir Python KeyError oluşur. Python, sözlükte olmayan bir öğe için değer döndüremediği için bu hata oluşur.

Bir Python sözlüğü bir kümedir. küme parantezleri ({}) içinde saklanan anahtar/değer çiftlerinin sayısı:

raspberry_pi = { "name" : "Raspberry Pi 4", "fiyat": 35.00, "RAM": "4GB" }

Anahtarlar “name”, “fiyat” ve “RAM” . Anahtarlar bir sözlükte iki nokta üst üste işaretinden önce görünür.

Katılımcıların %81'i bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha emin hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleştirin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan daha az zaman harcadı.

Ne olduğunu görelim. sözlüğümüzdeki USB bağlantı noktası sayısını almaya çalışırsak:

print(raspberry_pi["usb_ports"] )

Kodumuz şunu döndürür:

KeyError: 'usb_ports'

Bu hata bize belirttiğimiz anahtarın mevcut olmadığını söylüyor. Bu durumda, eksik anahtar “usb_ports”'dur.




KeyError Python: Solutions

Bir Python sözlüğü KeyError'ı işlemek için şunları yapabilirsiniz:

  • Dizin oluşturmayı kullanarak önceden bir anahtar olup olmadığını kontrol edin
  • “in” bir anahtar olup olmadığını kontrol etmek için anahtar kelime
  • Bir try…except bloğu kullanın.

Sizin için en iyi sonucu veren KeyError'ı ele almanın çözümü, kullanım durumunuza göre değişir.


Sözlük get() Yöntemini kullanın

Python sözlüğü get() yöntemi sözlükte bir değer döndürür. get() yöntemiyle varsayılan bir değer belirtebilirsiniz. Belirttiğiniz anahtarın adının bir değeri yoksa bu varsayılan değer döndürülür.

Düşününüz aşağıdaki kod:

Python yorumlayıcısını kullanarak kodumuzu çalıştıralım ve ne olduğunu görelim:

Hangi bilgileri almak istiyorsunuz? ALU Bu bilgisayar için ALU mevcut değil.

Kodumuz, “ALU” sözlük. Bu anahtar adına karşılık gelen bir değer yok. get() yöntemi, belirttiğimiz varsayılan değeri döndürür, bu “mevcut değil” .

İndekslemeyi Kullanarak Önceden Anahtarı Kontrol Edin

Bir Anahtar Hatası ile karşılaşmamak için indekslemeyi kullanarak bir anahtarın varlığını kontrol edebilirsiniz. Sözlükte bir anahtar varsa, o anahtarı kullanabilirsiniz. Aksi takdirde, programınıza o tuşa bağlı olmayan başka bir şey yapmasını söyleyebilirsiniz. 

Haydi “raspberry_pi” Python'da sözlük. İndekslemeyi kullanarak anahtarımızın sözlüğümüzde olup olmadığını kontrol edelim:

raspberry_pi = { "name": " Raspberry Pi 4", "fiyat": 35.00, "RAM": "4GB" } get_key = input("Hangi bilgileri almak istiyorsunuz (ad, fiyat, RAM)? ") if raspberry_pi[get_key]: print(" Bu bilgisayar için {} {}.".format(get_key, raspberry_pi[get_key])) else: print("Bu bilgi mevcut değil.")

Bir Python “if” anahtarımızın var olup olmadığını kontrol etmek için deyim. “raspberry_pi[get_key]” yalnızca anahtar varsa bir değer döndürür. Bu, anahtarımız varsa, “if” deyimi yürütülecektir. Anahtarımız yoksa, “else” deyimi yürütülecektir. 

Raspberry Pi'mizin RAM'ini bulmaya çalışalım:

Ne bilgi almak ister misiniz (isim, fiyat, RAM)? RAM Bu bilgisayarın RAM'i 4 GB'dir.

Şimdi bilgisayarın kaç USB bağlantı noktası olduğunu bulmaya çalışalım:

Hangi bilgileri almak istiyorsunuz (isim, fiyat, RAM)? USB Bu bilgi mevcut değil.

Kodumuz bir KeyError oluşturmuyor! Bunun nedeni, kullanmadan önce anahtarımızın var olup olmadığını kontrol etmemizdir. Eğer “else” içinde raspberry_pi[get_key] kullansaydık; ifadesi, kodumuz bir KeyError döndürür.


Bir try…except Block

Bir Python try…block hariç bir satır çalıştırmayı deneyecek Bu kod satırı çalıştırılamazsa, kodumuz belirttiğiniz istisnalara göre özel bir hata oluşturacaktır.

Bir hatanın varlığını belirlemek için bir try…except bloğu kullanabiliriz ve beklenmedik bir KeyError'ın Python programımıza yardım etmesini durdurun.

Daha önce bir try…block kullanarak bilgisayar örneğimiz için özel bir hata tanımlayalım:

"Python.Engineeringsı hayatıma girdi en çok ihtiyacım olduğunda ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerime uygun hayalimdeki işi buldum!"

Venus, Rockbot'ta Yazılım Mühendisi

< p>Raspberry Pi bilgisayarıyla ilgili belirli bir bilgiyi konsola yazdırmaya çalışmak için try…except bloğunu kullanırız.Eğer kodumuz “try” bloğunun herhangi bir yerinde bir KeyError ortaya çıkarırsa, kodumuz içeriğin içeriğini yürütür. “except” blok.

Bu, her KeyError oluşturulduğunda, konsola "Bu bilgi mevcut değil" yazdırıldığı anlamına gelir. Bilgisayarın adını öğrenmeye çalışalım. :

Hangi bilgileri almak istiyorsunuz (ad, fiyat, RAM) name Bu bilgisayarın adı is Raspberry Pi 4.

Şimdi bilgisayarın USB port kullanılabilirliğini öğrenmeye çalışalım:

Hangi bilgileri almak istiyorsunuz (isim, fiyat, RAM)? USB Bu bilgi mevcut değil.

Kodumuz, “try” engellemek. Bu, kodumuzun “except” kod bloğu.

Bir Anahtarı Önceden Kullanarak Kontrol Edin

“in” anahtar kelime, Python'un üyelik operatörlerinden biridir. Bir öğenin bir değerler listesinde olup olmadığını kontrol eder. “in” Bir anahtarın sözlük içinde olup olmadığını kontrol etmek için anahtar kelime. 

Bu program, değerini konsola yazdırmadan önce bir anahtarın var olup olmadığını kontrol eder:

raspberry_pi = { "name": "Raspberry Pi 4", "fiyat": 35.00, "RAM": "4GB" } get_key = input("Hangi bilgileri almak istiyorsunuz? (isim, fiyat, RAM)? ") if raspberry_pi'de get_key: print("Bu bilgisayar için {} {}.format(get_key, raspberry_pi[get_key])) else: print("Bu bilgi mevcut değil .")

Bu kod, “get_key” değerinin “raspberry_pi” sözlüğündeki bir anahtar olup olmadığını kontrol edecektir. Anahtar varsa, “if” ifadesi çalışacaktır. Aksi takdirde, “else” ifadesi çalışacaktır. Bilgisayarın CPU'su hakkındaki bilgileri kontrol etmeye çalışalım:

Hangi bilgileri almak istiyorsunuz (ad, fiyat, RAM)? CPU Bu bilgi mevcut değil.

Bilgisayarın adını kontrol edelim:

Hangi bilgileri almak istiyorsunuz (ad, fiyat, RAM)? name Bu bilgisayarın adı Raspberry Pi 4'tür.

Kodumuz çalışıyor! Var olmayan bir anahtarı aradığımızda, “else” deyim çalışır. Bu, “else” engelle.

Kodumuz çalışıyor! Var olmayan bir anahtarı aradığımızda, “else” deyim çalışır. Bu, “else” blok.




Sonuç

Var olmayan bir sözlükten bir değere erişmeye çalıştığınızda bir KeyError oluşur. Bir anahtar hatasını çözmek için, kullanmadan önce bir anahtarı önceden kontrol edebilir ve yalnızca anahtar varsa kullanabilirsiniz. Önemli bir hatayı işlemek için try…except bloğunu kullanabilirsiniz.

Python programlama dilini nasıl öğreneceğiniz konusunda tavsiyeler için kapsamlı Python Nasıl Öğrenilir kılavuzu. Bu kılavuzda en iyi öğrenim kaynaklarına, kitaplara ve kurslara bağlantılar bulacaksınız.





Python anahtar hatası: StackOverflow Questions

Tutorials