converting dict to object

Neil Cerutti horpner at yahoo.com
Sat Dec 2 21:20:49 EST 2006


On 2006-12-02, John Machin <sjmachin at lexicon.net> wrote:
> Neil Cerutti wrote:
>> On 2006-12-02, Michel Claveau <mcPas.De.Spam at mclaveauPas.De.Spam.com> wrote:
>> > Hi!
>> >
>> > Yes.
>> >
>> > But...
>> >
>> > Try:    d = {'a': 1, 'b': 2, 'def': 123}
>> >
>> > Ok, I go out...
>>
>> How to convert a list of strings into a list of integers:
>>
>>  a = ['82', '4', '16']
>>
>>  ai = [int(i) for i in a]
>>
>> Yes.
>>
>> But...
>>
>> Try:  a = ['82', '4', '16', 'foo']
>>
>> Ok, I go out...
>
> Michel was making (part of) a valid point: dictionaries have
> more flexibility in choice of keys than objects have in
> attribute names.  More completely:
>
> Suppose d.keys() produces ["one", "def", "foo bar", 3, "3"]
>
> o.one is OK.

I made the assumption that Michael was also the original poster,
and had somehow laid a clever trap. If I was wrong about that, my
apologies. It's one thing to ask how to convert 'a' and 'b' to
attributes, but quite another to convert arbitrary text.

> The OP might consider adding code to the __init__ method to
> check for cases where the dictionary key is not a string
> containing a valid Python identifier (not a keyword).

That raises the interesting question of what to do in that case.
Just letting an error occur might be perfectly good behavior.
Plus, I didn't know about...

> Observation: the keyword module's iskeyword() function gives an
> easy check. If one is supporting multiple versions of Python, a
> more complicated (overkill?) approach might be desirable: use
> the latest version of Python to generate a source file
> containing the latest keywords from keyword.kwlist.

Thanks for the pointer to keyword module. I hadn't noticed it
yet.

-- 
Neil Cerutti



More information about the Python-list mailing list