positional modifiers in python?

Huaiyu Zhu huaiyu at gauss.almadan.ibm.com
Sat Jun 8 00:24:13 CEST 2002


Eric Brunel <eric.brunel at pragmadev.com> wrote:
>fuf wrote:
>>  hello everyone,
>> 
>>  does python support positional parameters in the print method? ie.
>>  something like:
>>     print "there %2$s something %1$s" % ("there", "is")
>>  it doesn't work but maybe there's some other way?
>
>There's an utterly ugly way to do this:
>
>def toPosDict(l):
>  d = {}
>  map(lambda k,v,d=d: d.update({str(k):v}), range(len(l)), l)
>  return d
>print "there %(1)s something %(0)s" % toPosDict(("there", "is"))
>
>For post-Python 2.2 users (I'm still 2.1, sorry), the "map" line may 
>certainly be replaced by:
>
>map(d.__setitem__, [str(i) for i in range(len(l))], l)
>
>but it may be less efficient than the code above (one map + one list 
>comprehension instead of a single map in the first solution). Maybe the 
>second's a little more readable (or a little less unreadable ;-).

Or if you prefer functional programming style (Only for 2.2):

def str_enum_dict(x):  return dict(zip(map(str, range(len(x))), x))
print "there %(1)s something %(0)s" % str_enum_dict(('there', 'is')) 

Huaiyu



More information about the Python-list mailing list