2014-01-22 2 views
1

Я должен создать namedtuple, который имеет 27 field_names. Хотя у него слишком много field_names, я создал список под названием sub, который имеет список элементов для field_names. result - это моя ссылка на экземпляр namedtuple.Пропустить список элементов в названный кортеж

sub = [ 
    'MA9221', 'MC9211', 'MC9212', 'MC9213', 'MC9214', 
    'MC9215', 'MC9222', 'MC9223', 'MC9224', 'MC9225', 
    'MC9231', 'MC9232', 'MC9233', 'MC9234', 'MC9235', 
    'MC9241', 'MC9242', 'MC9243', 'MC9244', 'MC9251', 
    'MC9252', 'MC9273', 'MC9277', 'MC9283', 'MC9285'] 
result = namedtuple('result', ['rollno', 'name'] + sub) 

значения Результат:

rollno = 123123 
name = "Sam" 
sub_value = [ 
    1,0,0,0,0, 
    0,0,1,1,1, 
    1,1,1,0,0, 
    1,1,0,0,1, 
    1,1,1,0,1] 

Теперь, я не знаю, как передать элементы sub_value в result(rollno, name, ...).

ответ

3

Эта строка фактически определяет сам тип:

result = namedtuple('result', ['rollno', 'name'] + sub) 

Чтобы создать экземпляр, теперь нужно позвонить result(...).

>>> result(rollno, name, *sub_value) 
result(rollno=123123, name='Sam', MA9221=1, MC9211=0, MC9212=0, MC9213=0, MC9214=0, MC9215=0, MC9222=0, MC9223=1, MC9224=1, MC9225=1, MC9231=1, MC9232=1, MC9233=1, MC9234=0, MC9235=0, MC9241=1, MC9242=1, MC9243=0, MC9244=0, MC9251=1, MC9252=1, MC9273=1, MC9277=1, MC9283=0, MC9285=1) 
+1

Я думаю, что его проблема заключалась в том, что он не знал, как вскрыть-распаковать. +1 в любом случае. – roippi

+0

@roippi +1 для распаковки-распаковки – bkmagnetron

Смежные вопросы