how to use list name from string variable

10,384

Solution 1

month_list = []
year_list = []
lists = [month_list, year_list]
dict = {0 : year_list, 1:month_list}

for i, values in enumerate(data[:2]):
    dict[i].append(<data>)

print 'month_list - ', month_list[0]
print 'year_list - ', year_list[0]

>>> month_list -  ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
>>> year_list -  ['2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003']

Solution 2

Sounds to me like you should be using references instead of names.

lists = [month_list, year_list]

But list comprehensions can only create a single list regardless, so you'll need to rethink your problem.

Solution 3

You can add global variables to the modul's namespace and connect values to them with this method:

globals()["month_list"] = [<list comprehension computation>]

Read more about namespaces in Python documents.

Or you can store these list in a new dictionary.

your_dictionary = {}
your_dictionary["month_list"] = [<list comprehension computation>]

Solution 4

Why use strings in the first place?

Why not just do...

lists = [month_list, year_list]
for list_items in lists:
    print repr(list_items)

after you define the two lists?

Share:
10,384
sam
Author by

sam

Updated on June 04, 2022

Comments

  • sam
    sam almost 2 years

    I am generating these 2 lists using list comprehension.

    lists = ['month_list', 'year_list']
    for values in lists:
        print [<list comprehension computation>]
    
    >>> ['2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003']
    >>> ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
    

    I want to append these 2 dynamically generated lists to this list names.
    for example :

    month_list = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']  
    year_list = ['2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003']
    
  • Jasmijn
    Jasmijn about 12 years
    Why string keys? Why not integer keys?