Чем namedtuple из модуля collections удобнее обычного tuple при хранении записей вида (имя, возраст, город)?

AДоступ к полям по имени через атрибут: user.name вместо user[0], что делает код читаемее
BВозможность изменять поля после создания: user.name = 'Иван' обновит запись на месте
CАвтоматическая валидация типов при создании: User(name=1) вызовет TypeError сразу
DХранение данных внутри dict, а не tuple, ради быстрого поиска по строковому ключу
Правильный ответ. namedtuple позволяет обращаться к полям по имени, а не только по индексу, что делает код читаемее.

Разбор

Обычный tuple позволяет доступ только по индексу: user[0], user[1]. С namedtuple можно писать user.name, user.age — это понятнее и снижает вероятность ошибок при изменении порядка полей. При этом namedtuple остаётся неизменяемым, как обычный кортеж: присвоение user.name = 'Иван' вызовет AttributeError. Валидации типов нет — для этого используют dataclass или pydantic. Внутри namedtuple хранится как кортеж, а не словарь.

Проверь себя · 1/3разбор после ответа
Дан словарь d = {"country": "RU"}. Нужно прочитать значение по ключу "city", а если ключа нет — вернуть строку "unknown" без исключения. Что подходит?
Тренировать Python в Telegram

Ещё вопросы по теме «Коллекции и структуры данных»