frozendict: Steering Council принял PEP 814, и тип уже доступен в бета-версиях Python 3.15. Виктор Стиннер, соавтор PEP, рассказал историю вопроса: его первую попытку, PEP 416, Гвидо отклонил ещё в 2012 году.Что внутри:
🔘 неизменяемый словарь: попытка присвоить элемент даёт
TypeError;🔘 хешируемый, если хешируемы все значения, так что его можно класть в
set и использовать как ключ словаря;🔘 сохраняет порядок вставки, но сравнение и хеш от порядка не зависят;
🔘 поддерживает объединение через
| и сравнение с обычным dict.Главное отличие от
types.MappingProxyType в том, что прокси остаётся обёрткой над живым словарём, а frozendict — самостоятельный неизменяемый тип со своим хешем.Ждёте
frozendict в 3.15 или вам хватало MappingProxyType?@zen_of_python