¿Puedo hacer referencia a un namedtuple fieldame usando una variable?Python: Usando namedtuple._replace con una variable como un nombre de campo
from collections import namedtuple
import random
Prize = namedtuple("Prize", ["left", "right"])
this_prize = Prize("FirstPrize", "SecondPrize")
if random.random() > .5:
choice = "left"
else:
choice = "right"
#retrieve the value of "left" or "right" depending on the choice
print "You won", getattr(this_prize,choice)
#replace the value of "left" or "right" depending on the choice
this_prize._replace(choice = "Yay") #this doesn't work
print this_prize
¡Yay! eso es lo que necesitaba saber. Gracias –
Estoy tratando de optimizar una estructura de datos para la velocidad. Tenía la esperanza de poder usar namedtuples, pero tendría que cambiarlos en su lugar. Quizás tendré que usar algo más. Ver: http://stackoverflow.com/questions/2127680/python-optimizing-or-at-least-getting-fresh-ideas-for-a-tree-generator –
Tuve un caso en el que no modificaría la mayoría de las tuplas, pero solo unas pocas, así que '_replace' es el camino a seguir. Esta respuesta me ayudó mucho (más que el documento oficial). – JulienD