generating variable names on fly in python

python

Solution

If you really want to create them on the fly you can assign to the dict that is returned by either `globals()` or `locals()` depending on what namespace you want to create them in:

globals()['somevar'] = 'someval'
print somevar  # prints 'someval'

But I wouldn't recommend doing that. In general, avoid global variables. Using `locals()` often just obscures what you are really doing. Instead, create your own dict and assign to it.

mydict = {}
mydict['somevar'] = 'someval'
print mydict['somevar']

Learn the python zen; run this and grok it well:

>>> import this

Problem

Is there a way I can generate variable names in python in a loop and assign values to them? For example, if I have ``` prices = [5, 12, 45] ``` I want ``` price1 = 5 price2 = 12 price3 = 45 ``` Can I do this in a loop or something instead of manually assigning `price1 = prices[0]`, `price2 = prices[1]` etc. Thank you. EDIT Many people suggested that I write a reason for requiring this. First, there have been times where I have thought this may be more convenient than using a list...I don't remember exactly when, but I think I have thought of using this when there are many levels of nesting. For example, if one has a list of lists of lists, defining variables in the above way may help reduce the level of nesting. Second, today I thought of this when trying to learn use of Pytables. I just came across Pytables and I saw that when defining the structure of a table, the column names and types are described in the following manner: ``` class TableFormat(tables.IsDescription): firstColumnName = StringCol(16) secondColumnName = StringCol(16) thirdColumnName = StringCol(16) ``` If I have 100 columns, typing the name of each column explicitly seems a lot of work. So, I wondered whether there is a way to generate these column names on the fly.

Original source

Related problems