"Extracting" a dictionary
Jason Mobarak
jason at __nospam__mobarak.name
Tue May 18 12:31:07 EDT 2004
Arnold Filip wrote:
> Daniel Klein wrote:
>
>> Hello,
>>
>> I'm quite new to Python, and since a not-so-superficial look into the
>> docs didn't answer my question (although it still feels quite basic),
>> I decided to turn to this place:
>>
>> Is there a way to 'extract' a dictionary into the current namespace?
>> That is, if you have
>> {'foo' : 23, 'bar' : 42}
>> you would get a variable foo with value 23 and a variable bar with
>> value 42? Such a function would of course only work on string keys and
>> would probably have to check that, but still, it sounds practical
>> enough that surely someone else thought of it before.
>>
>> Daniel
>>
>
> How about this:
>
> In [1]: d = {'foo' : 23, 'bar' : 42}
>
> In [2]: for item in d.items():
> ...: exec "%s = %d" % item
> ...:
>
> In [3]: foo
> Out[3]: 23
>
> In [4]: bar
> Out[4]: 42
>
That's disgusting. At least with manipulating __main__ your not also
bringing in the possibility of excuting arbitrary code.
>>> d = {'foo' : 23, '__import__("os").system("echo executed a system
command"); bar' : 42}
>>> for item in d.items():
... exec "%s = %d" % item
...
executed a system command
>>> foo,bar
(23, 42)
Granted, the reasons for wanting to do this may be ill-concieved,
there's probably a better, more obvious solution -- since doing the
subject of this thread is neither easy nor elegant.
--
Jason
More information about the Python-list
mailing list