gargonx wrote:
Even if i put it in exactly the way you did:

import re
charmatcher = re.compile(r' [A-Z] [\d]?')

ext = dict(D="V1", O="M1", G="S1")
std = dict(S="H")

decode_replacements ={}
decode_replacements.update([(std[key], key) for key in std])

Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: keys

What version of Python are you using? Here's what I get:

PythonWin 2.4 (#60, Nov 30 2004, 09:34:21) [MSC v.1310 32 bit (Intel)] on win32.
Portions Copyright 1994-2004 Mark Hammond ([EMAIL PROTECTED]) - see 'Help/About PythonWin' for further copyright information.
py>
py> import re
py> charmatcher = re.compile(r' [A-Z] [\d]?')
py>
py> ext = dict(D="V1", O="M1", G="S1")
py> std = dict(S="H")
py>
py> decode_replacements = {}
py> decode_replacements.update([(std[key], key) for key in std])


As you can see, I'm using Python 2.4. I'm guessing you're using an earlier version. I just checked the docs for dict.update:

"update() accepts either another mapping object or an iterable of key/value pairs (as a tuple or other iterable of length two). If keyword arguments are specified, the mapping is then is updated with those key/value pairs: "d.update(red=1, blue=2)". Changed in version 2.4: Allowed the argument to be an iterable of key/value pairs and allowed keyword arguments."

So dict.update() only accepts a list of key/value pairs as of 2.4 I guess. Try:

py> decode_replacements.update(dict([(std[key], key) for key in std]))

I believe that, unlike dict.update, the dict constructor allowed a list of key/value pairs previous to Python 2.4. If that doesn't work either, you can do the more verbose version:

py> for key in std:
...     decode_replacements[std[key]] = key
...

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

Reply via email to