Newbie Variable Substitution Question
Skip Montanaro
skip at pobox.com
Wed Aug 20 13:53:35 EDT 2003
ckrieg> for c in range(1, 3):
ckrieg> print "%(c)s %(1)s" % (locals(), dict01)
ckrieg> Results in an error: TypeError: format requires a mapping
ckrieg> Why doesn't the second loop work? It seems to be a cleaner way
ckrieg> of doing this. Am I missing something?
The right-hand argument to the % operator is a tuple of dictionaries, not a
dictionary.
Try something like this instead:
class MultiDict(dict):
def __init__(self, *args):
self._dicts = args
def __getitem__(self, key):
for d in self._dicts:
try:
return d[key]
except KeyError:
pass
raise KeyError, key
def has_key(self, key):
for d in self._dicts:
if key in d:
return True
return False
dict01 = { '1': 'a', '2': 'b' }
for c in range(1, 3):
print "%(c)s %(1)s" % MultiDict(locals(), dict01)
More information about the Python-list
mailing list