Python listesi dizinleri tamsayı olmalı veya str değil dilimler olmalıdır
Python işlevleri ve meth
Michael Zippo
18.11.2021
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:
< 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!
"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‚"
"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!"