From: aimeixu on
Hi,
I am newbie for python ,Here is my question:
a = "{'a':'1','b':'2'}"
how to change a into a dictionary ,says, a = {'a':'1','b':'2'}
Thanks a lot .Really need help.
From: Ulrich Eckhardt on
aimeixu wrote:
> a = "{'a':'1','b':'2'}"
> how to change a into a dictionary ,says, a = {'a':'1','b':'2'}

You could evaluate it as regular Python code, using "exec":

res = {}
exec("a={'a':'1'}", res)
print res['a']

However, if this is input from a file or the user, be aware that this opens
loopholes for executing _any_ code, so you should only exec code from
sources you can trust.

Uli

--
Sator Laser GmbH
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932

From: Chris Rebert on
On Mon, Aug 9, 2010 at 2:53 AM, Shashwat Anand <anand.shashwat(a)gmail.com> wrote:
> On Mon, Aug 9, 2010 at 3:03 PM, aimeixu <aimeixu(a)amazon.com> wrote:
>> Hi,
>> I am newbie for python ,Here is my question:
>> a = "{'a':'1','b':'2'}"
>> how to change a into a dictionary ,says, a = {'a':'1','b':'2'}
>> Thanks a lot .Really need help.
>
> Parse the string and re-create the dictionary.
>>>> s = "{'a':'1','b':'2'}"
>>>> ds = {}
>>>> for i in s.strip('{}').split(','):
> ...     key, val = i.split(':')
> ...     ds[key.strip("'")] = val.strip("'")

Just for the record, that'll break if the dictionary entries have
embedded commas or colons.
eval() will handle such cases correctly and probably* run faster, but
is obviously insecure.

If you have control of both ends of the serialization process, you
might consider using the `json` or `pickle` std lib modules instead.

Cheers,
Chris
--
*Do a benchmark obviously.
http://blog.rebertia.com
From: Daniel Urban on
> a = "{'a':'1','b':'2'}"
> how to change a into a dictionary ,says, a = {'a':'1','b':'2'}

See also the ast.literal_eval function:
http://docs.python.org/py3k/library/ast.html#ast.literal_eval


Daniel