Sobes.tech
Junior

Jakie mogą być klucze w słownikach w Pythonie?

sobes.tech AI

Odpowiedź od AI

Klucze w słownikach Pythona mogą być dowolnymi niezmiennymi (hashable) obiektami.

Niezmiennymi typami danych są:

  • Liczby całkowite (int)
  • Liczby zmiennoprzecinkowe (float)
  • Ciągi znaków (str)
  • Krotki (tuple) zawierające tylko niezmienialne elementy
  • Wartości logiczne (bool)
  • NoneType (None)
  • Frozenset (frozenset) zawierający tylko niezmienialne elementy

Przykłady dozwolonych kluczy:

# Dozwolone klucze
mój_słownik = {
    1: "jeden",
    3.14: "pi",
    "klucz": "wartość",
    (1, 2): "krotka",
    True: "prawda",
    None: "brak",
    frozenset({1, 2}): "niezmienny zbiór"
}

Niezmienialne obiekty mają hash, który jest używany do szybkiego wyszukiwania w słowniku.

Obiekty zmienialne, takie jak listy (list), zbiory (set) i inne słowniki (dict), nie mogą być kluczami, ponieważ ich zawartość może się zmienić, co zakłóciłoby integralność hash.

Przykłady niedozwolonych kluczy:

# Niedozwolone klucze (spowoduje TypeError)
# mój_słownik = {
#     [1, 2]: "lista",
#     {1, 2}: "zbiór",
#     {"a": 1}: "inny słownik"
# }