Sobes.tech
Middle

Ինչու՞ Python-ի բառարանի բանալիները պետք է լինեն փոփոխական և արդյոք կարելի է օգտագործել փոփոխական բանալիներ։

sobes.tech AI

Պատասխան AI-ից

Python-ի բառարանի բանալիները պետք է լինեն փոփոխական չլինեն, քանի որ բառարանը օգտագործում է hashing՝ արագ մուտք գործելու համար արժեքների։ Եթե բանալին փոփոխական է, նրա hash-ը կարող է փոխվել այն տեղադրելուց հետո, ինչը դարձնում է այդ բանալին և համապատասխան արժեքը գտնելը անհնար:

Օրինակ, տողերը, թվերը և tuple-երը (որոնք բաղկացած են փոփոխական չլինող տարրերից) համապատասխան բանալիներ են, քանի որ նրանց hash-ը մնում է անփոփոխ:

Չփոփոխական բանալիներ (օրինակ՝ ցանկեր կամ բառարաններ) օգտագործել չի կարելի, քանի որ նրանց չունեն կայուն hash և չեն աջակցում hash() մեթոդին։ Փորձել փոփոխական օբյեկտ օգտագործել որպես բանալին՝ կհանգեցնի TypeError սխալի:

Օրինակ:

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

Այսպիսով, բանալիների փոփոխական չլինելը ապահովում է բառարանի hash աղյուսակի ճիշտ աշխատանքը։