← Назад к вопросам

Что такое frozenset?

1.2 Junior🔥 101 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое frozenset?

frozenset — это встроенный в Python неизменяемый тип данных, который представляет неупорядоченную коллекцию уникальных элементов. Это примерно то же самое, что обычный set, но с одним ключевым отличием: содержимое frozenset нельзя изменить после создания.

Основные характеристики

  • Неизменяемость (immutable) — нельзя добавлять, удалять или изменять элементы
  • Хешируемость — можно использовать как ключ в словаре или элемент другого set/frozenset
  • Уникальность — хранит только уникальные элементы
  • Неупорядоченность — порядок элементов не гарантируется

Создание frozenset

# Из списка или другой итерируемой последовательности
fs1 = frozenset([1, 2, 3, 3, 4])
print(fs1)  # frozenset({1, 2, 3, 4})

# Из строки
fs2 = frozenset('hello')
print(fs2)  # frozenset({'h', 'e', 'l', 'o'})

# Пустой frozenset
fs3 = frozenset()
print(fs3)  # frozenset()

# Из словаря (берёт ключи)
fs4 = frozenset({'a': 1, 'b': 2})
print(fs4)  # frozenset({'a', 'b'})

Операции с frozenset

fs1 = frozenset({1, 2, 3})
fs2 = frozenset({2, 3, 4})

# Объединение
print(fs1 | fs2)  # frozenset({1, 2, 3, 4})

# Пересечение
print(fs1 & fs2)  # frozenset({2, 3})

# Разность
print(fs1 - fs2)  # frozenset({1})

# Симметричная разность
print(fs1 ^ fs2)  # frozenset({1, 4})

# Проверка подмножества
print(frozenset({2, 3}) <= fs1)  # True

# Проверка супермножества
print(fs1 >= frozenset({2, 3}))  # True

# Проверка наличия элемента
print(2 in fs1)  # True

Почему frozenset важен?

1. Использование как ключей словаря

dict_with_frozenset_keys = {
    frozenset([1, 2]): 'первая группа',
    frozenset([3, 4]): 'вторая группа'
}

print(dict_with_frozenset_keys[frozenset([1, 2])])  # 'первая группа'

2. Элементы другого set

# set не может содержать обычные set, но может содержать frozenset
sets_collection = {frozenset([1, 2]), frozenset([3, 4])}
print(sets_collection)  # {frozenset({1, 2}), frozenset({3, 4})}

3. Безопасность данных

def process_immutable_data(data: frozenset) -> None:
    # Гарантия что данные не будут изменены внутри функции
    print(data)
    # data.add(5)  # TypeError

Отличие от set

Свойствоsetfrozenset
ИзменяемостьДаНет
ХешируемостьНетДа
Использование как ключНетДа

frozenset — фундаментальный инструмент для создания неизменяемых коллекций, полезный когда требуется хешируемость или гарантия неизменяемости данных.