Ross, I'm no expert in python, so excuse me if this is inane.
What I would do is have fmts be a dictionary where fmts = { 3 = 'oats %0d kilos over %0d days with %0d workers', 2 = 'barley %0d lbs for %0d hours', 1 = 'apples %0d baskets'} then something like for x in bigList: print fmts[len(x)] % x I didn't test this, but in theory it should work. Hope this helps, Kerri On Thu, Oct 9, 2008 at 2:36 PM, RossRGK <[EMAIL PROTECTED]> wrote: > I'm having trouble getting my head around a solution for a situation where I > need to flexibly format some text with a varying number of embedded fields. > > Here's a simplified description of my challenge... > > I have a list of lists called bigList: > > bigList = [ little, small, tiny] > > The sub-lists have varying sizes. I won't know how many items they have but > it will be between 0 and 3 > > So perhaps little = [3, 2, 7] > small = [6,4] > tiny = [2] > > The values in those sub lists correspond to formatted print strings. The > formatting strings will change over time and they are in a list called > "fmts" where > > fmts = [fmtA, fmtB, fmtC] where > > fmtA = 'oats %0d kilos over %0d days with %0d workers' > fmtB = 'barley %0d lbs for %0d hours' > fmtC = 'apples %0d baskets' > > If I knew how many fields were in each 'sub-list' in bigList ahead of time, > and it never changed I could awkwardly do this: > > print fmtA %(little[0], little[1], little[2]) > print fmtB %(small[0], small[1]) > print fmtC %(tiny[0]) > > or equivalently, > > print fmts[0] %(bigList[0][0], bigList[0][1], bigList[0][2]) > print fmts[1] %(bigList[1][0], bigList[1][1]) > print fmts[2] %(bigList[2][0]) > > Both approaches would yield: > oats 3 kilos over 2 days with 7 workers > barley 6 lbs for 4 hours > apples 2 baskets > > > Now my challenge: since the number of fields is unknown at design time, my > app needs to add be able to flexibly handle this. > > I though maybe I could use a loop that figures things out as it goes along. > e.g... > > i=0 > for fmtString in fmts > numbOfFields = len(fmt[i]) > print fmtString %(bigList[i][ need "for 0 to numbOffields" worth of > indices!] ) > > But I don't know how to have a number of items in the print expression that > align to the numbOfFields value!? Is there some other approach I can use? > > I thought perhaps it would accomodate extra elements in the %(...) part of > the formatted print expression which would be ignored, but that doesn't > work. > > Maybe I have to break my fmts up and do a field at a time? Any thoughts are > appreciated :) > > -Ross. > -- > http://mail.python.org/mailman/listinfo/python-list > -- Yuma Educational Computer Consortium Compass Development Team Kerri Reno [EMAIL PROTECTED] (928) 502-4240 .·:*¨¨*:·. .·:*¨¨*:·. .·:*¨¨*:·. -- http://mail.python.org/mailman/listinfo/python-list