Python. Convertir un string en una tupla, lista o diccionario

El método más conocido para convertir una cadena (o string) en una tupla, lista o diccionario es usar la función eval():

texto = "((1, 2), (3, 4))"
print eval(texto)[0]

Que dará como resultado:

(1, 2)

que es el resultado que buscamos (el primer elemento).

Por curiosidad podemos probar a imprimir el primer elemento con:

print texto[0]

Y ahora podemos hacer lo mismo con un diccionario:

texto = "{ 'uno': 1, 'dos': 2 }"
print eval(texto)['uno']

y el resultado será:

1

Si probásemos a usar la cadena sin eval tendríamos un error:

print texto['uno']

dará como resultado:

TypeError: string indices must be integers, not str

Una forma más segura de convertir cadenas a tuplas, listas o diccionarios

La función eval() puede ser una fuente de problemas si el texto proviene, por ejemplo, de un usuario malintencionado. Para hacer la conversión de manera más segura es más conveniente usar la función literal_eval():

import ast
texto = "{ 'uno': 1, 'dos': 2 }"
print ast.literal_eval(texto)['uno']