@Derfirm
Noname Developer.

Как создавать namedtuple с динамичным количеством полей?

Доброго времени суток
Пример из мануала модуля collections:
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
import csv
for emp in map(EmployeeRecord._make, csv.reader(open("employees.csv", "rb"))):
    print emp.name, emp.title

На продакшене всплыл такой неприятный момент, количество полей в документе, который импортируется из гуглдока может меняться, или требования добавились или пометки какие-то.
Из-за этого приходится читать csv старым дедовским способом и обращаться к полям по индексам, что меня очень удручает. Меня интерисуют первые несколько полей csv файла и их порядок никогда не поменяется.
Есть ли способ создавать namedtuple с динамичным числом полей?
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 2
Djaler
@Djaler
Сеньор-помидор
Если я правильно понял задачу stackoverflow.com/questions/15324644/how-do-i-add-...
Ответ написан
Комментировать
Если вы заранее знаете какие поля обязательно будут и вас интересуют только они, почему просто не создать собственный класс с этими параметрами, __init__ которого будет принимать на вход эти параметры в нужном порядке, и *args - в который попадёт всё остальное, что при желании можно сохранить или проигнорировать.
если волнует выделение памяти используйте __slots__
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы