Присвоение значений ключам именованного кортежа
Можно ли ключам объекта namedtuple присваивать значения по отдельности и как затем вывести список значений?
Пример того, как мне хотелось сделать, присваивать именно по отдельности, так как присвоенные значения -- результаты вызова из БД, что каждый раз при вызове функции должны были бы обновляться:
features = namedtuple('Features', ['val1', 'val2', 'val3', 'val4'])
features.val1 = 1690
features.val2 = 12
features.val3 = 1990
features.val4 = 120
И я хотела бы чтоб в итоге было:
list(features)
output: [1690, 12, 1990, 120]
Но работает только так:
features.val1, features.val2
output: 1690, 12
В итоге features -- это main.Features, нельзя делать features._asdict.values() или list(features), чтобы получить вектор значений.
Я понимаю, что правильно делать так:
features = namedtuple('Features', ['val1', 'val2', 'val3', 'val4'])
f = features(val1 = 1690, val2 = 12, val3 = 1990, val4 = 120)
Но так, в моем случае совершенно неудобно.
Ответы (1 шт):
Вы просто используете тип как объект, а нужно создать экземпляр объекта этого типа:
from collections import namedtuple
Features = namedtuple('Features', ['val1', 'val2', 'val3', 'val4'])
features = Features(1690, 12, 1990, 120)
list(features)
[1690, 12, 1990, 120]
Как выставить для namedtuple значения по умолчанию в разных версиях Python написано здесь