On Thu, 16 Oct 2008 08:04:23 -0700, Astley Le Jasper wrote: > I'm creating mulitple instances, putting them in a list, iterating > through the list to send them to some functions where process them with > some instance specific parameters. Something along the lines of: > > bob = someobject() > harry = someobject() > fred = someobject() > > parameterdict = {'bob': (0,1,2), 'harry': (3,4,5), 'fred': (6,7,8)} > people_list = (bob, harry, fred) > > for person in people_list: > add_parameters(person) > > def add_parameters(person) > mytuple = parameterdict[??????instance.name????] > person.x = mytuple[0] > person.y = mytuple[1] > person.z = mytuple[2] > > ... alternatively there is probably a very much easier way of doing it.
Assuming that someobject() objects are hashable, you can do this: # use the objects themselves as keys, not their names parameterdict = {bob: (0,1,2), harry: (3,4,5), fred: (6,7,8)} people_list = [bob, harry, fred] but of course that doesn't work if someobject() items aren't hashable (say, lists or dicts). But in my opinion, this is probably the best way (untested): def add_parameters(person, x, y, z): # note we don't use any global variables person.x = x person.y = y person.z = z parameters = [(0,1,2), (3,4,5), (6,7,8)] people = [bob, harry, fred] for person, args in zip(people, parameters): add_parameters(person, *args) -- Steven -- http://mail.python.org/mailman/listinfo/python-list