Как сделать структуру данных, в которую нельзя вставлять или изменять значения, но можно получать по ключу?

Для интерфейса словаря только для чтения используйте types.MappingProxyType. Это представление, а не глубокая неизменяемость: изменения исходного словаря остаются видны.

Короткий ответ

Что ответить на собеседовании

Для интерфейса словаря только для чтения используйте types.MappingProxyType. Это представление, а не глубокая неизменяемость: изменения исходного словаря остаются видны.

Подробный разбор

Ответ с пояснениями

Для интерфейса словаря только для чтения используйте types.MappingProxyType. Это представление, а не глубокая неизменяемость: изменения исходного словаря остаются видны.

Например, view = MappingProxyType(data) позволяет читать view[key], но запрещает присваивание и удаление через view. Для независимого поверхностного снимка оберните dict(data). Вложенные списки и словари при этом остаются изменяемыми; при необходимости их тоже нужно преобразовать в неизменяемые структуры. Такой объект защищает интерфейс от случайной записи, а не служит границей безопасности для недоверенного кода.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее