Sobes.tech
Middle

Jakie są ograniczenia dotyczące kluczy w dict w Pythonie?

sobes.tech AI

Odpowiedź od AI

W Pythonie klucze w słowniku (dict) muszą być obiektami hashowalnymi (niemutowalnymi). Oznacza to, że klucze muszą mieć niezmienny stan i implementować metodę __hash__().

Główne ograniczenia:

  • Klucze muszą być niezmiennymi typami, np.: łańcuchami (str), liczbami (int, float), krotkami (tuple), pod warunkiem, że wszystkie elementy krotki są również hashowalne.
  • Nie można używać typów mutowalnych, takich jak listy (list), zbiory (set), słowniki (dict) jako kluczy, ponieważ nie są one hashowalne.

Przykład:

valid_dict = {
    "key": 1,
    42: "value",
    (1, 2): "tuple key"
}

invalid_dict = {
    [1, 2]: "list as key"  # spowoduje błąd TypeError
}

Jeśli spróbujesz użyć obiektu mutowalnego jako klucza, Python zgłosi błąd TypeError: unhashable type.