Python hash edilemez tür listesi

Python s√∂zlukleri, bir s√∂zlukte anahtar olarak yalnƒ±zca hashable veri turlerini kabul eder. Liste, ele geçirilebilir bir veri turu deƒüildir. Bir s√∂zlukte bir listeyi anahtar olarak belirtirseniz, "TypeError: unhashable type: ‚Äòlist‚Äôrsquo;rdquo; error.

Bu kƒ±lavuzda, bu hatanƒ±n ne anlama geldiƒüi ve kodunuzda neden g√∂rduƒüunuz hakkƒ±nda konu≈üuyoruz. Nasƒ±l ç√∂zeceƒüinizi g√∂stermek için bu hatanƒ±n bir √∂rneƒüini inceleyeceƒüiz.

TypeError: unhashable type: ‘list’

S√∂zluklerin iki b√∂lumu vardƒ±r: anahtarlar ve deƒüerler. Anahtarlar, belirli bir deƒüerle ili≈ükili etiketlerdir. Bir deƒüere eri≈ümek için, o deƒüerin anahtar adƒ±na ba≈üvurmalƒ±sƒ±nƒ±z.

Değerler, dizeleri -in-python/">listeler, anahtar olarak yalnızca hashable nesneler kabul edilebilir. Hashable nesneler, zamanla değişmeyen bir hash değerine sahip nesnelerdir. Karıştırılabilir nesnelere örnek olarak demetler ve dizeler verilebilir.

Listelerin değişmeyen bir karma değeri yoktur. Hash değerleri zamanla değişebilir. Bu, sözluk anahtarı olarak bir liste belirleyemeyeceğiniz anlamına gelir.

Örnek Senaryo

ortalama notu uzerinde olan √∂ƒürencilerin bir listesini olu≈üturan bir program olu≈üturalƒ±m. 75. Bu listede her √∂ƒürencinin s√∂zluk kayƒ±tlarƒ± ve notlarƒ± yer alacaktƒ±r. Bu s√∂zluƒüu olu≈üturmak için, okuldaki tum √∂ƒürencilerin ve notlarƒ±nƒ±n bir listesini içeren bir s√∂zlukten çalƒ±≈üacaƒüƒ±z.

√ñƒürencilerin bir listesini ve a≈üaƒüƒ±dakiler için bir s√∂zluk tanƒ±mlayarak ba≈ülayalƒ±m. en iyi √∂ƒürencilerimiz:

"√∂ƒürenciler‚" liste bir s√∂zluktur. Her s√∂zluk iki anahtar içerir: isim ve notlar. "top_students‚" adƒ±nda bir s√∂zluk tanƒ±mladƒ±k. Bu, en iyi √∂ƒürencilerimizle ilgili bilgileri içerecektir.

Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. Bugun 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 az zaman harcadƒ±.

Artƒ±k bunu tanƒ±mladƒ±k. s√∂zlukte, not ortalamasƒ± 75’in uzerinde olan √∂ƒürencileri filtrelemek ve onlarƒ± yeni s√∂zluƒüumuze eklemek için for d√∂ngusu kullanƒ±yoruz:

For d√∂ngusunun her yinelemesinde, bir √∂ƒürencinin aldƒ±ƒüƒ± tum notlarƒ±n ortalamasƒ±. Bunu, tum notlarƒ±n toplamƒ±nƒ± kaç tane not kaydedildiƒüine b√∂lerek yapƒ±yoruz.

Sonra, bu ortalamanƒ±n 75’ten buyuk olup olmadƒ±ƒüƒ±nƒ± kontrol ediyoruz. Eƒüer √∂yleyse, yeni bir giri≈ü olu≈üturuyoruz. top_students s√∂zluƒüu bir √∂ƒürencinin adƒ± ve notlarƒ± ile birlikte.

Son olarak, top_students s√∂zluƒüunu konsola yazdƒ±rƒ±yoruz, b√∂ylece not ortalamasƒ± 75’in uzerinde olan tum √∂ƒürencileri g√∂rebiliyoruz:

Kodumuzu çalƒ±≈ütƒ±rƒ±n ve ne olduƒüunu g√∂run olur:

Kodumuz başarıyla yurutulemiyor.

The Çözum

Kodumuz, yorumlayƒ±cƒ± 11. satƒ±ra ula≈üana kadar çalƒ±≈üƒ±r. Bu satƒ±rda kodumuz ≈üunu belirtir:

Kodumuzdaki hata, bir listeyi ≈üu ≈üekilde atamaya çalƒ±≈ümƒ±≈ü olmamƒ±zdƒ±r. s√∂zlukte bir anahtar. Kodumuz d√∂ngunun ilk yinelemesinde bu satƒ±rƒ± ayrƒ±≈ütƒ±rdƒ±ƒüƒ±nda, kodumuz a≈üaƒüƒ±daki anahtar ve deƒüere sahip bir s√∂zluk olu≈üturmaya çalƒ±≈üƒ±r:

Bu geçersiz bir s√∂zluk. Kodumuz çalƒ±≈ümayan bir anahtar olarak bir liste atamaya çalƒ±≈üƒ±r.

Bu sorunu ç√∂zmek için, s√∂zlukte not listesi yerine √∂ƒürencinin adƒ±nƒ± anahtar olarak kullanƒ±rƒ±z:

Notlar listesini anahtar yerine bir deƒüer olarak atadƒ±k. √ñƒürencinin adƒ± s√∂zlukteki anahtardƒ±r. Kodumuzu çalƒ±≈ütƒ±ralƒ±m:

Kodumuz, en iyi performans g√∂steren √∂ƒürenciler hakkƒ±nda bilgiler içeren bir s√∂zluk ba≈üarƒ±yla olu≈üturuyor. Son uç sƒ±navƒ±ndaki ortalama notu 75’in uzerinde olan herhangi bir √∂ƒürenci s√∂zluƒüe eklendi.

Sözluğumuz şu şekildedir:

  • Anahtarlar: Linda, Holly
  • Deƒüerler: [84, 82, 65], [72, 74, 81]

Artƒ±k anahtar adlarƒ±mƒ±za karakter dizileri atadƒ±ƒüƒ±mƒ±z için kodumuz çalƒ±≈üƒ±yor.

Sonuç

Bir listeyi s√∂zlukte anahtar olarak atamaya çalƒ±≈ütƒ±ƒüƒ±nƒ±zda "TypeError: unhashable type: ‚Äòlist‚Äô‚" hatasƒ± ortaya 烱kƒ±yor. Bu hatayƒ± ç√∂zmek için, yalnƒ±zca bir s√∂zluk anahtarƒ± olarak dize veya bir demet.

Artƒ±k bu hatayƒ± profesyonel bir kodlayƒ±cƒ± gibi ç√∂zmeye hazƒ±rsƒ±nƒ±z!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method