Sobes.tech
Junior

Millised võivad olla võtmed Python sõnaloendites?

sobes.tech AI

Vastus AI-lt

Python sõnastike võtmed võivad olla mis tahes muutumatud (hashable) objektid.

Muutumatud andmetüübid hõlmavad:

  • Täisarve (int)
  • Ujuvväärtusi (float)
  • Stringe (str)
  • Ainult muutumatuid elemente sisaldavaid tuppe (tuple)
  • Boolean väärtusi (bool)
  • NoneType (None)
  • Frozenset (frozenset), mis sisaldab ainult muutumatuid elemente

Näited kehtivatest võtmetest:

# Kehtivad võtmed
minu_sonastik = {
    1: "üks",
    3.14: "pi",
    "võti": "väärtus",
    (1, 2): "tupp",
    True: "tõene",
    None: "pole",
    frozenset({1, 2}): "muutumatu kogum"
}

Muutumatutel objektidel on hash, mida kasutatakse kiireks otsinguks sõnastikus.

Muutlikud andmetüübid, nagu nimekirjad (list), kogumid (set) ja teised sõnastikud (dict), ei saa olla võtmetena, kuna nende sisu võib muutuda, mis rikub hash-i terviklikkust.

Vigased näited:

# Vigased võtmed (tekitab TypeError)
# minu_sonastik = {
#     [1, 2]: "nimekiri",
#     {1, 2}: "kogum",
#     {"a": 1}: "teine sõnastik"
# }