¿Cómo usar el valor de cadena como nombre de variable en Python?

Supongamos que tengo listas de la siguiente manera:

candy = ['a','b','c'] fruit = ['d','e','f'] snack = ['g','h','i'] 

y una cuerda

 name = 'fruit' 

Quiero usar el name cadena para acceder a la lista y su contenido. En este caso debe ser fruit . Usaré el name para iterar la lista. Como:

 for x in name: print x 

No entiendo qué es exactamente lo que intentas lograr al hacer esto, pero esto se puede hacer usando eval . Aunque no recomiendo usar eval . Sería mejor si nos dices lo que estás tratando de lograr finalmente.

 >>> candy = ['a','b','c'] >>> fruit = ['d','e','f'] >>> snack = ['g','h','i'] >>> name = 'fruit' >>> eval(name) ['d', 'e', 'f'] 

EDITAR

Mira la otra respuesta por Sнаđошƒаӽ. Será mejor camino por recorrer. eval tiene riesgos de seguridad y no recomiendo su uso.

Puedes usar globals() así:

 for e in globals()[name]: print(e) 

Salida:

 d e f 

Y si sus variables están en algún ámbito local, puede usar locals()

O puedes crear tu diccionario y acceder a eso:

 d = {'candy': candy, 'fruit': fruit, 'snack': snack} name = 'fruit' for e in d[name]: print(e) 

¡Usa un diccionario!

 my_dictionary = { #Use {} to enclose your dictionary! dictionaries are key,value pairs. so for this dict 'fruit' is a key and ['d', 'e', 'f'] are values associated with the key 'fruit' 'fruit' : ['d','e','f'], #indentation within a dict doesn't matter as long as each item is separated by a , 'candy' : ['a','b','c'] , 'snack' : ['g','h','i'] } print my_dictionary['fruit'] # how to access a dictionary. for key in my_dictionary: print key #how to iterate through a dictionary, each iteration will give you the next key print my_dictionary[key] #you can access the value of each key like this, it is however suggested to do the following! for key, value in my_dictionary.iteritems(): print key, value #where key is the key and value is the value associated with key print my_dictionary.keys() #list of keys for a dict print my_dictionary.values() #list of values for a dict 

los diccionarios por defecto no están ordenados, y esto puede causar problemas en el futuro, sin embargo, hay maneras de evitarlo utilizando matrices multidimensionales o discos ordenados, ¡pero lo guardaremos para más adelante! ¡Espero que esto ayude!