Комментарии (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
| Свойство | set | frozenset |
|---|---|---|
| Изменяемость | Да | Нет |
| Хешируемость | Нет | Да |
| Использование как ключ | Нет | Да |
frozenset — фундаментальный инструмент для создания неизменяемых коллекций, полезный когда требуется хешируемость или гарантия неизменяемости данных.