Sobes.tech
Back to questions
Junior — Middle
84

Возможно ли использовать кортеж в качестве ключа в словаре Python, и при каких условиях это допустимо?

Companies where asked
БилайнБилайн

Answer from AI

sobes.tech AI

Да, в Python кортеж можно использовать в качестве ключа словаря, если он является неизменяемым (immutable). Ключи словаря должны быть хешируемыми, то есть иметь неизменяемое состояние и реализовывать метод __hash__.

Кортежи сами по себе неизменяемы, поэтому подходят для ключей, если все их элементы тоже хешируемы. Например:

my_dict = { (1, 2): "value", ("a", "b"): 42 }
print(my_dict[(1, 2)])  # Выведет: value

Однако, если кортеж содержит изменяемые объекты, например списки, он не будет хешируемым и использоваться как ключ нельзя:

key = (1, [2, 3])  # Список внутри кортежа
my_dict = {}
my_dict[key] = "test"  # Ошибка TypeError: unhashable type: 'list'

Итого, кортеж можно использовать как ключ словаря, если он состоит только из хешируемых элементов.