I am trying to fill a tuple with named tuples using a for loop.
The example code below works:
import collections
Experiment = collections.namedtuple('Experiment', ['parameter', ])
nsize = 3
parameters = {}
for n in range(0, nsize):
parameters[n] = n +1
experiments = (
Experiment(parameter = parameters[0]),
Experiment(parameter = parameters[1]),
Experiment(parameter = parameters[2]),)
However, I would like to replace the last section with a for loop:
for n in range(0, nsize):
experiments[n] = Experiment(parameter = parameters[n])
Which gives the error:
TypeError: 'tuple' object does not support item assignment
Any ideas?
parametersreally is just a set of continuous integers from 0 tonsize - 1, consider using a list instead.parameters = list(range(1,nsize+1)). Then Mark Meyer's answer becomes simplytuple(Experiment(x) for x in parameters).