Hi,

RossRGK wrote:
Kerri Reno wrote:
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


Thx for the suggestion - i think that would match the number of fields to the number of parameters in the specific example but not the general case. ie fmts[3] could have 3fields this time, but might be 2 another time or something else.

Maybe you want to reconsider your approach and instead of use "lists"
just a dict or class with the correct naming?

If you use a class you could also attach all the meta information
for formatting.

Dicts are easily aliased to your formats using named arguments:

'oats %(weight)0d kilos over %(days)0d days with %(workers)0d workers' % dict(weight=5,days=3,workers=10)

which would make more sense when you read it and/or edit the sentence
sometime later. You could also consider extending the attributes
to have the unit (e.g. kg, pound, days, ...) attached to it
and decide to add a clever get() method to your container class
(which replaces the list) and use it like this:

'oats %(weight.kg)s ...' % yourinstance ...

where instance.get() would be called with 'weight.kg',
splits on the . for the attribute: weight,

calls self.weight.format(unit='kg')

to retrieve "5 kilos" or something :-)

Just some random thoughts.

Regards
Tino

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to