¿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 

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

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!