Python türü dict

Python dili, bir sözlukte neyin anahtar olarak kullanılabileceği konusunda spesifiktir. Bir Python sözluğunde, tum anahtarlar karma olabilir olmalıdır.

S√∂zluƒüe anahtar eklerken karma olmayan bir anahtar turu kullanmaya çalƒ±≈üƒ±rsanƒ±z, "TypeError: unhashable turuyle kar≈üƒ±la≈üƒ±rsƒ±nƒ±z: ‚Äòdict‚Äô‚" error.

Bu kƒ±lavuzda, bu hatanƒ±n ne anlama geldiƒüi ve neden ortaya 烱ktƒ±ƒüƒ± hakkƒ±nda konu≈üuyoruz. Bunu kodunuzda nasƒ±l ç√∂zeceƒüinizi √∂ƒürenebilmeniz için bu hatanƒ±n bir √∂rneƒüini inceliyoruz.

TypeError: unhashable type: ‘dict’

Sözlukler iki bölumden oluşur: anahtarlar ve değerler. Anahtarlar, bir değere bağlı tanımlayıcılardır. Bir anahtara başvurduğunuzda, o anahtarla ilişkili değeri alabilirsiniz.

Bir s√∂zlukte yalnƒ±zca karma nesneler anahtar olabilir. dizeler, tamsayƒ±lar, tuples ve frozenset’ler bazƒ± istisnalar dƒ±≈üƒ±nda yƒ±kanabilir. Bu nedenle s√∂zlukler s√∂zlukte anahtar olarak kullanƒ±lamaz.

S√∂zluƒüe bir √∂ƒüe eklemek için geçerli bir hashable anahtarƒ± belirtmelisiniz. √ñrneƒüin, "name‚" geçerli bir anahtardƒ±r, ancak { "name‚": "test‚" } deƒüildir.

Örnek Senaryo

Burada bir fırında beşten fazla satılan tum kekleri bir sözlukten başka bir sözluğe ekleyen bir program yazıyoruz.

Her pasta hakkƒ±nda s√∂zlukler içeren pastalarƒ±n bir listesini ilan ederek ba≈ülayƒ±n. Ayrƒ±ca, be≈ü defadan fazla satƒ±lmƒ±≈ü pastalarƒ± depolayabileceƒüimiz bir s√∂zluk tanƒ±mlƒ±yoruz.

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ƒ±na katƒ±lƒ±n.

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ƒ±.

"keklerimiz‚" liste uç s√∂zluk içerir. Her s√∂zluk iki anahtar ve deƒüer içerir. Anahtar isimler "kek‚" ve "sold‚".

≈ûimdi, pasta listemizden geçen ve satƒ±lanlarƒ± bulan bir for d√∂ngusu yazƒ±yoruz. be≈ü defadan fazla. Bu kekler "sold_more_than_five‚" s√∂zluƒüune eklenecek:

For d√∂ngumuzde, her s√∂zlukteki "sold‚" deƒüerinin 5’ten buyuk olup olmadƒ±ƒüƒ±nƒ± kar≈üƒ±la≈ütƒ±rƒ±rƒ±z. Eƒüer √∂yleyse, o √∂ƒüe "sold_more_than_five‚" s√∂zluƒüumuze eklenir. kullanƒ±cƒ±ya s√∂z konusu pastanƒ±n be≈ü defadan fazla satƒ±ldƒ±ƒüƒ±nƒ± bildiren mesaj konsola yazdƒ±rƒ±lƒ±r.

D√∂ngumuz çalƒ±≈ütƒ±ƒüƒ±nda, t’yi yazdƒ±rƒ±rƒ±z. o "sold_more_than_five‚" konsola s√∂zluk.

Programƒ±mƒ±zƒ±n çalƒ±≈ütƒ±ƒüƒ±ndan emin olmak için kodumuzu çalƒ±≈ütƒ±rƒ±n:

Kodumuz bir hata dönduruyor.

Çözum

< p>Ba≈üka bir s√∂zluk kullanarak bir s√∂zluk anahtarƒ± olu≈üturmaya çalƒ±≈ütƒ±ƒüƒ±mƒ±z için kodumuz çalƒ±≈ümƒ±yor.

"c‚" "cakes‚" liste. Bu, "sold_more_than_five‚" s√∂zluk, yanlƒ±≈ülƒ±kla bir s√∂zluƒüu anahtar olarak eklemeye çalƒ±≈üƒ±yoruz:

"if‚" deyimi "Havuçlu Kek‚" kek, kodumuz ≈üu ≈üekilde çalƒ±≈ümaya çalƒ±≈üƒ±r:

S√∂zlukte anahtar olarak bir s√∂zluk eklemeye çalƒ±≈ütƒ±ƒüƒ±mƒ±z için bu geçersiz. Bu sorunu s√∂zluk anahtarƒ±mƒ±zƒ±n adƒ± olarak c["name‚"] kullanarak ç√∂zebiliriz:

Kodumuzu bu revize edilmi≈ü kodla çalƒ±≈ütƒ±rƒ±n:

Kodumuz ba≈üarƒ±yla çalƒ±≈üƒ±yor. Artƒ±k her pastanƒ±n adƒ±nƒ± s√∂zluk yerine anahtar olarak kullanƒ±yoruz.

Sonuç

Anahtarƒ± unhashable olan bir s√∂zlukte bir √∂ƒüe olu≈üturmaya çalƒ±≈ütƒ±ƒüƒ±nƒ±zda "TypeError: unhashable type: ‚Äòdict‚Äô‚" hatasƒ± ortaya 烱kƒ±yor Bir s√∂zlukte anahtar olarak yalnƒ±zca dizeler, demetler ve tamsayƒ±lar gibi deƒüi≈ümez nesneler kullanƒ±labilir.

Bu hatayƒ± ç√∂zmek için, bir √∂ƒüe olu≈ütururken yalnƒ±zca hashable nesneleri kullandƒ±ƒüƒ±nƒ±zdan emin olun. bir s√∂zluk. Artƒ±k bu yaygƒ±n Python hatasƒ±nƒ± profesyonel bir geli≈ütirici 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