For example, if I have S=['a','b','c'], I want to have 3 variables a_value=0, b_value=0, c_value=0. Maybe I am approaching it a wrong way, but at the moment that is what I am trying to do!
            Asked
            
        
        
            Active
            
        
            Viewed 4,803 times
        
    -1
            
            
        - 
                    a_value, b_value, c_value = ['a', 'b', 'c']? – user2263572 Jan 27 '19 at 02:59
- 
                    7Yes, dynamic variable names is always approaching it the wrong way. Maybe looking for a dict, `values = {'a': 0, 'b': 0, 'c': 0}` where you can access `values[x]`. – Ry- Jan 27 '19 at 02:59
2 Answers
2
            
            
        Python allows you to dynamically create global (not local) variables by setting them in the dictionary returned by the globals() function. Using your list would look like this:
S = ['a', 'b', 'c']
for v in S:
    globals()[f'{v}_value'] = 0
print(a_value)
print(b_value)
print(c_value)
which prints
0
0
0
as expected. Note that the scope of a "global variable" in Python is the module in which the globals() function is called - this may be different than what you would expect coming from other languages.
As mentioned in comments, there is almost always a better approach that leads to nicer code that is easier to debug.
 
    
    
        Chris Hunt
        
- 3,840
- 3
- 30
- 46
- 
                    1The section of the docs that you linked says: *Note:The contents of this dictionary should not be modified*. – wim Jan 27 '19 at 03:07
- 
                    
-2
            
            
        You can assign the list items with commas
S=['a','b','c']
S[0], S[1], S[2] = 0,0,0
print(S)
>>>
[0, 0, 0]
 
    
    
        dsb4k8
        
- 61
- 3
