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.