Middle
Чӣ маҳдудиятҳо дар калидҳо дар dict дар Python вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
Дар Python, калидҳо дар луғат (dict) бояд объектҳои ҳешшаванда (беғараз) бошанд. Ин маъно дорад, ки калидҳо бояд ҳолати тағйирнопазир дошта бошанд ва усули __hash__()-ро иҷро кунанд.
Маҳдудиятҳои асосӣ:
- Калидҳо бояд намудҳои тағйирнопазир бошанд, масалан: сатрҳо (
str), рақамҳо (int,float), тӯпҳо (tuple), бо шарти он ки ҳамаи унсурҳои тӯп низ ҳешшаванда бошанд. - Намегузоранд, ки намудҳои тағйирёбанда, монанди рӯйхатҳо (
list), маҷмӯъҳо (set), луғатҳо (dict) ҳамчун калид истифода шаванд, зеро онҳо ҳешшаванда нестанд.
Масалан:
valid_dict = {
"key": 1,
42: "value",
(1, 2): "tuple key"
}
invalid_dict = {
[1, 2]: "list as key" # боиси TypeError мешавад
}
Агар кӯшиш кунед, ки объект тағйирёбанда ҳамчун калид истифода шавад, Python хато TypeError: unhashable type-ро бармегардонад.