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!

Bu makalenin sorunu çözmenize yardımcı olduğunu umuyoruz. Python hash edilemez tür listesi dışında, Python işlevleri ve meth ile ilgili diğer konulara bakın.

Python'da başarılı olmak ister misiniz? en iyi Python çevrimiçi kursları 2022 hakkındaki incelememize bakın. Veri Bilimi ile ilgileniyorsanız, R'de programlamayı nasıl öğreneceğinizi de kontrol edin.

Bu arada, bu materyal diğer dillerde de mevcuttur:



Chen Chamberlet

Singapore | 2022-12-01

Python işlevleri ve meth her şey biraz kafa karıştırıcı 😭 Python hash edilemez tür listesi karşılaştığım tek sorun değil. Umarım artık ortaya çıkmaz

Marie Krasiko

London | 2022-12-01

Python işlevleri ve meth her şey biraz kafa karıştırıcı 😭 Python hash edilemez tür listesi karşılaştığım tek sorun değil. Dün kontrol edildi, işe yarıyor!

Boris Gonzalez

Texas | 2022-12-01

Basitçe ifade edilmiş ve açık. Paylaşım için teşekkürler. Python hash edilemez tür listesi ve Python işlevleri ve meth ile ilgili diğer konular her zaman benim zayıf noktam olmuştur 😁. Lisans tezimde kullanacağım

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

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers

News


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically