[Tutor] Addressing a variable whose name is the value of a string

Andreas Pfrengle spelzdinkelclonk at web.de
Sun Apr 8 23:47:36 CEST 2007


Jordan Greenberg wrote:

>Andreas Pfrengle wrote:
>  
>
>>Bob Gailer wrote:
>>
>>    
>>
>>>Andreas Pfrengle wrote:
>>>
>>>      
>>>
>>>>Hello,
>>>>
>>>>I want to change the value of a variable whose name I don't know, but
>>>>this name is stored as a string in another variable, like:
>>>>
>>>>x = 1
>>>>var = 'x'
>>>>
>>>>Now I want to change the value of x, but address it via var. 
>>>>        
>>>>
>>>exec is the statement for doing this, but the need to do this can 
>>>always be met better by using a dictionary instead of global variables.
>>>
>>>      
>>>
>>Thanks Bob, the 'exec' saved me. But I'm not sure how I could solve my 
>>specific problem with a dict, since my 'var' variable is a string I'm 
>>getting from a database-field, that refers to the name of another field, 
>>which should be changed. So I see no other way than resolving the string 
>>in some instance - or is there?
>>    
>>
>
>Sure, you do something like:
>mydict={'x':1, 'y':2}
>var='x'
>mydict[var]=5
>and then you just access it like mydict['x'] instead of just x.
>Jordan
>
>  
>
Hi Jordan,
looks good if I'm happy with my values inside mydict and don't want to 
have sth. like x=5 in the end. But since 'x' is the name of a database 
field (I simplified it here for an example), I still see no way around 
the exec, so I can change the content of the x-field (consider the 
content of the var-field as a vector to the corresponding field that 
needs a change, x in the example).
If this is still possible with a dict, I still don't see it (sorry), but 
it would surely be more elegant than an exec-solution, since I don't 
need security checks for the string that is saved, before executing it.
Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070408/64cc6fde/attachment.html 


More information about the Tutor mailing list