Newbie Variable Substitution Question

Erik Max Francis max at
Wed Aug 20 19:40:09 CEST 2003

ckrieg at wrote:

> for c in range(1, 3):
>     print "%(c)s %(1)s" % (locals(), dict01)
> Results in an error: TypeError: format requires a mapping
> Why doesn't the second loop work?  It seems to be a cleaner way of
> doing this.  Am I missing something?

Because when used this way, the string formatting operator % requires
one argument on the left, which is a mapping type.  You're passing it

Consider what would happen if both dictionaries had the same key; which
should be used?  Presuming you wanted them to be checked in order, try:

	d = dict01.copy()
	print ... % d

   Erik Max Francis && max at &&
 __ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
/  \ I'm the woman whose / Three wishes came true
\__/  Lamya

More information about the Python-list mailing list