Sobes.tech
Middle

Miks peavad Python sõnastiku võtmed olema muutumatud ja kas saab kasutada muudetavaid võtmeid?

sobes.tech AI

Vastus AI-lt

Python'i sõnastiku võtmed peavad olema muutumatud, kuna sõnastik kasutab hashingut kiireks väärtuste ligipääsuks. Kui võti on muudetav, võib selle hash pärast sõnastikku lisamist muutuda, mis muudab selle võtme ja selle väärtuse leidmise võimatuks.

Näiteks sobivad võtmed on stringid, numbrid ja tükid (mis koosnevad muutumatutest elementidest), kuna nende hash jääb konstantseks.

Muutuvad võtmed (näiteks nimekirjad või sõnastikud) ei ole lubatud, kuna neil puudub stabiilne hash ja nad ei toeta hash() meetodit. Muutuvate objektide kasutamine võtmena põhjustab TypeError'i.

Näide:

my_dict = {}
my_dict[[1, 2, 3]] = "value"  # TypeError: unhashable type: 'list'

Seega tagab võtmete muutmatus sõnastiku hash-tabeli õige toimimise.