Sobes.tech
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-ро бармегардонад.