Python Glossary English

все Python 3Множества (set)понятие

frozenset — неизменяемое множество

frozenset

frozenset — неизменяемая версия set. Хэшируемо, может быть ключом словаря или элементом другого множества.

Синтаксис

frozenset(iterable)

Именно ради неизменяемости frozenset и берут: множество множеств или набор-ключ в словаре иначе не собрать — обычный set нехэшируем и падает с TypeError: unhashable type: 'set'. Методов, меняющих объект на месте (add, discard, pop, update), здесь нет, а вот сравнение работает через границу типов: frozenset({1, 2}) == {1, 2} даёт True. В смешанных операциях тип результата задаёт левый операнд: frozenset | set вернёт frozenset, а set | frozenset — обычный set.

Примеры

fs = frozenset([1, 2, 3])
print(fs)  # → frozenset({1, 2, 3})
try:
    fs.add(4)
except AttributeError as e:
    print(e)  # → 'frozenset' object has no attribute 'add'
d = {frozenset([1, 2]): 'pair'}
print(d[frozenset([2, 1])])  # → pair — ключ словаря, порядок не важен
s = {frozenset([1, 2]), frozenset([3, 4])}
print(len(s))  # → 2 — элемент множества
fs2 = frozenset([1, 2, 3])
fs3 = frozenset([2, 3, 4])
print(fs2 & fs3)  # → frozenset({2, 3})

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности