"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