Python listesi dizinleri tamsayı olmalı veya str değil dilimler olmalıdır

Dize dizinleri, dizeler deƒüil, tamsayƒ±lar veya dilimler olmalƒ±dƒ±r? Bu hata ne anlama geliyor? Bu, turu i≈ülemle uyumlu olmayan bir deƒüer uzerinde i≈ülem gerçekle≈ütirmeye çalƒ±≈ütƒ±ƒüƒ±mƒ±zƒ± s√∂yleyen bir TypeError. √á√∂zum nedir?

Bu kƒ±lavuzda, tum bu sorularƒ± yanƒ±tlayacaƒüƒ±z. Python’da bu hataya neyin neden olduƒüunu ve neden ortaya 烱ktƒ±ƒüƒ±nƒ± tartƒ±≈üacaƒüƒ±z. Nasƒ±l ç√∂zeceƒüinizi anlamanƒ±za yardƒ±mcƒ± olmak için √∂rnek bir senaryo uzerinden geçeceƒüiz. Lafƒ± daha fazla uzatmadan ba≈ülayalƒ±m!

Sorun: typeerror: liste dizinleri tamsayı veya dilim olmalıdır, str değil

Houston, bir TypeError’umuz var:

Bu hata olu≈ütu bir dize deƒüeri kullanarak bir liste içindeki bir deƒüere eri≈ümeye çalƒ±≈ütƒ±ƒüƒ±nƒ±zda.

listeler, sayılar kullanılarak dizine eklenir. Aşağıdaki listeyi göz önunde bulundurun:

1 2345
S tring
< p>

Bu dizideki deƒüerlere eri≈ümek için dizin dilimlemeyi kullanabiliriz. Bu, o konumdaki karakteri almak için bir dizini ve ardƒ±ndan bir dizin deƒüerini çaƒüƒ±rdƒ±ƒüƒ±nƒ±z zamandƒ±r:

Bu kod şunu döndurur: S. Kodumuz, listemizdeki 0 dizin konumunda bulunan karakteri alır.

Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda kendilerini daha guvende hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈üin.

Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.

Bir eƒüitim programƒ±na eri≈ümeye çalƒ±≈üƒ±rsanƒ±z "S‚" gibi bir harf kullanarak listelerseniz bir hata olu≈üur.

Örnek Senaryo

"typeerror: liste indeksleri tamsayƒ±lar veya dilimler olmalƒ±dƒ±r, str‚" JSON nesneleri listesindeki bir √∂ƒüeye bir listeymi≈ü gibi eri≈ümeye çalƒ±≈ütƒ±ƒüƒ±nƒ±zda genellikle ortaya 烱kar.

Du≈üunun a≈üaƒüƒ±daki kod parçacƒ±ƒüƒ±:

Bu kod parçacƒ±ƒüƒ±, bir sƒ±nƒ±ftaki belirli bir √∂ƒürencinin ya≈üƒ±nƒ± bulur. √ñnce √∂ƒürenci listesini a烱kladƒ±k. Bu liste, her √∂ƒürenciyi bir JSON nesnesi olarak saklar.

Sonra, kullanƒ±cƒ±dan ya≈üƒ±nƒ± bulmak istediƒüi √∂ƒürencinin adƒ±nƒ± girmesini istiyoruz.Daha sonra programƒ±mƒ±z listedeki her √∂ƒürenciyi bir for d√∂ngusu, adƒ± belirttiƒüimiz √∂ƒürenciyle e≈üle≈üen √∂ƒürenciyi bulmak için.

Eƒüer o isim bulunursa, √∂ƒürencinin ya≈üƒ± konsola yazdƒ±rƒ±lƒ±r. Aksi takdirde hiçbir ≈üey olmaz.

Kodumuzu çalƒ±≈ütƒ±rmayƒ± deneyelim:

Ha, hayır. Bu bir TypeError!

Çözum

"typeerror: liste indeksleri str deƒüil tamsayƒ±lar veya dilimler olmalƒ±dƒ±r‚" hatasƒ±nƒ± bir listedeki √∂ƒüelere dizeleri deƒüil, indeks numaralarƒ±nƒ± kullanarak eri≈ütiƒüinizden emin olarak ç√∂zebilirsiniz.

Kodumuzdaki sorun, √∂ƒürenci listemizdeki "name‚" √∂ƒüesine eri≈ümeye çalƒ±≈ümamƒ±zdƒ±r:

Listemiz birden fazla JSON nesnesi içerdiƒüinden bu deƒüere kar≈üƒ±lƒ±k gelmez. Bu sorunu ç√∂zmek için, √∂ƒürenci listemizi yinelemek için bir range() ifadesi kullanacaƒüƒ±z. Ardƒ±ndan, her √∂ƒürenciye dizin numarasƒ±na g√∂re eri≈üeceƒüiz:

Ba≈ülamak için bir aralƒ±k ifadesi kullandƒ±k. Bu, listemizdeki her √∂ƒürenciyi yinelememize izin verecektir. Her "√∂ƒürenci["key_name‚"]‚" √∂rneƒüini deƒüi≈ütirdik. "√∂ƒürenciler[ler]["anahtar_adƒ±‚"]‚" ile. Bu, listedeki her bir deƒüere eri≈ümemizi saƒülar.

Kodumuzu çalƒ±≈ütƒ±ralƒ±m ve ne olduƒüunu g√∂relim:

Kodumuz √∂ƒürenciyi ba≈üarƒ±yla buldu. Lisa Simpson’ƒ±n ya≈üƒ±.

"√∂ƒürenciler‚" listesindeki her deƒüere, bir dize yerine dizin numarasƒ±nƒ± kullanarak eri≈üiyoruz. Sorun ç√∂zuldu!



Sonuç

"typeerror: list indisleri tamsayƒ± veya Bir tamsayƒ± yerine dize deƒüerlerini kullanarak bir listeye eri≈ümeye çalƒ±≈ütƒ±ƒüƒ±nƒ±zda str‚" deƒüil dilimler yukseltilir. Bu sorunu ç√∂zmek için, bir dizin numarasƒ± kullanarak bir listeye eri≈ütiƒüinizden emin olun.

A Bu hatanƒ±n ortaya 烱ktƒ±ƒüƒ± genel senaryo, bir liste uzerinde yineleme yaptƒ±ƒüƒ±nƒ±zda ve listedeki nesneleri kar≈üƒ±la≈ütƒ±rdƒ±ƒüƒ±nƒ±zda ortaya 烱kar.Bu hatayƒ± ç√∂zmek için bir range() deyimi kullandƒ±k t b√∂ylece "√∂ƒürenciler‚"

Artƒ±k bir Python uzmanƒ± gibi bu hatayƒ± ç√∂zmeye hazƒ±rsƒ±nƒ±z!

"Python.Engineering hayatƒ±ma en çok ihtiyacƒ±m olduƒüu anda girdi ve hƒ±zlƒ± bir ≈üekilde uyum saƒülamama yardƒ±mcƒ± oldu. bir eƒüitim kampƒ±. Mezun olduktan iki ay sonra, hayattaki deƒüerlerim ve hedeflerim ile uyumlu hayalimdeki i≈üi buldum!"

Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi

p>