Sobes.tech
Junior

Ключҳо дар луғатҳо дар Python чӣ гуна метавонанд бошанд?

sobes.tech AI

Ҷавоб аз AI

Python луғатларида калитлар ҳар қандай ўзгартирилмайдиган (hashable) объектлар бўлиши мумкин.

Ўзгартирилмайдиган маълумот турлари қуйидагиларни ўз ичига олади:

  • Тўлиқ сонлар (int)
  • Ўтказгичли сонлар (float)
  • Матнлар (str)
  • Фақат ўзгартирилмайдиган элементлардан иборат тўпламлар (tuple)
  • Логик қийматлар (bool)
  • NoneType (None)
  • Frozenset (frozenset) фақат ўзгартирилмайдиган элементлардан иборат

Мўлжалланган калитлар мисоллари:

# Мўлжалланган калитлар
my_dict = {
    1: "бир",
    3.14: "пи",
    "калит": "қиймат",
    (1, 2): "тўплам",
    True: "ҳақиқий",
    None: "йўқ",
    frozenset({1, 2}): "ўзгартирилмайдиган тўплам"
}

Ўзгартирилмайдиган объектлар хешга эга бўлиб, у тезкор излаш учун ишлатилади.

Ўзгартириладиган турлар, масалан, рўйхатлар (list), тўплар (set) ва бошқа луғатлар (dict), калит сифатида қўлланмайди, чунки уларнинг мазмуни ўзгариши мумкин, бу хешнинг бутунлигини бузади.

Нотўғри калитлар мисоллари:

# Нотўғри калитлар (TypeError чиқаради)
# my_dict = {
#     [1, 2]: "рўйхат",
#     {1, 2}: "тўплам",
#     {"a": 1}: "бошқа луғат"
# }