Какие знаешь требования к ключам в словаре Python

«Какие знаешь требования к ключам в словаре Python» — вопрос из категории Алгоритмы, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Допустимые типы ключей:

  • Числа (int, float)
  • Строки (str)
  • Кортежи (tuple), если они содержат только неизменяемые элементы
  • frozenset

Недопустимые типы ключей:

  • Списки (list)
  • Множества (set)
  • Словари (dict)
  • Другие изменяемые объекты

Пример:

valid_dict = {
    1: 'number',
    'key': 'string',
    (1, 2): 'tuple'
}

invalid_dict = {
    [1, 2]: 'list'  # TypeError: unhashable type: 'list'
}