Printing formatted strings from a dictionary

Thomas Philips tkpmep at hotmail.com
Wed May 12 16:30:21 EDT 2004


I want to print "1 spam 4 you" using a formatted string that gets its 
inputs from the dictionary d={'n1':1, 's1':'spam', 'n2':4}. To do so,
I write

>>> x="%('n1')d %('s1')s %('n2')d you"
>>> x % d

Traceback (most recent call last):
  File "<pyshell#22>", line 1, in -toplevel-
    x % d
KeyError: "'n1'"
>>> 

However, I get what I want if I edit x to remove the quotes around n1,
s1 and n2 and write
>>> x="%(n1)d %(s1)s %(n2)d you"
>>> x % d
'1 spam 4 you'

The syntax that works seems to run counter to the way dictionaries
work:
>>> d['n1']
1
>>> d[n1]

Traceback (most recent call last):
  File "<pyshell#18>", line 1, in -toplevel-
    d[n1]
NameError: name 'n1' is not defined

What is the error in my logic?

Thomas Philips



More information about the Python-list mailing list