Sobes.tech
Middle

Dlaczego klucze w słowniku Pythona muszą być niezmienne i czy można używać zmiennych kluczy?

sobes.tech AI

Odpowiedź od AI

Klucze w słowniku Pythona muszą być niezmienne, ponieważ słownik używa haszowania do szybkiego dostępu do wartości. Jeśli klucz jest zmienny, jego hash może się zmienić po dodaniu do słownika, co uniemożliwi odnalezienie tego klucza i odpowiadającej mu wartości.

Na przykład, łańcuchy znaków, liczby i krotki (składające się z niezmiennych elementów) są odpowiednimi kluczami, ponieważ ich hash jest stały.

Nie można używać zmiennych kluczy (np. list lub słowników), ponieważ nie mają one stałego hasha i nie obsługują metody hash(). Próba użycia zmiennego obiektu jako klucza spowoduje błąd TypeError.

Przykład:

my_dict = {}
my_dict[[1, 2, 3]] = "value"  # TypeError: unhashable type: 'list'

W związku z tym, niezmienność kluczy gwarantuje poprawne działanie tablicy haszującej słownika.