Posso fare riferimento a un fieldame con nome con una variabile?Python: utilizzo di namedtuple._replace con una variabile come nome di 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! questo è quello che dovevo sapere. Grazie –
Sto cercando di ottimizzare una struttura dati per la velocità. Speravo di poter usare namedtuples, ma dovrei cambiarli sul posto. Forse dovrò usare qualcos'altro. Vedi: http://stackoverflow.com/questions/2127680/python-optimizing-or-at-least-getting-fresh-ideas-for-a-tree-generator –
Avevo un caso in cui non avrei modificato la maggior parte delle tuple, ma solo alcune di esse, quindi '_replace' è la strada da percorrere. Questa risposta mi ha aiutato molto (più del doc ufficiale). – JulienD