Чем 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" без исключения. Что подходит?Ещё вопросы по теме «Коллекции и структуры данных»
- Есть список событий `events = ["click"]`. Объект `events` используется в нескольких местах по ссылке, поэтому важно изменить именно тот же объект (не создавать новый). Нужно добавить элементы из `new_events = ["view", "purchase"]`, чтобы итог был плоским. Какой вариант корректен?
- Дан словарь `d = {"country": "RU"}`. Нужно прочитать значение по ключу `"city"`, а если ключа нет — вернуть строку `"unknown"` без исключения. Что подходит?
- В логах есть список `user_ids` с повторениями. Как получить количество уникальных пользователей?
- Что произойдёт при выполнении кода `t = (1, 2); t[0] = 9`?
- Дан список `nums = [10, 20, 30, 40]`. Чему равен результат выражения `nums[1:3]`?
- Все вопросы по «Коллекции и структуры данных» →