Какие структуры данных можно добавлять в множество (Set) в Python

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

Ответ

В Python множество (set) может содержать только хешируемые (неизменяемые) объекты. Это связано с тем, что множества используют хеш-таблицы для хранения элементов, а хеш неизменяемого объекта должен оставаться постоянным.

Допустимые типы данных:

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

Недопустимые:

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

Пример:

valid_set = {1, "hello", (2, 3), frozenset([4, 5])}  # Работает
invalid_set = {[1, 2]}  # TypeError: unhashable type: 'list'