Kann ich einen namedtuple Feldname mithilfe einer Variablen referenzieren?Python: Verwenden von namedtuple._replace mit einer Variablen als Feldname
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! das musste ich wissen. Danke –
Ich versuche eine Datenstruktur für Geschwindigkeit zu optimieren. Ich hatte gehofft, ich könnte Nametuples verwenden, aber ich würde sie an Ort und Stelle ändern müssen. Vielleicht muss ich etwas anderes benutzen. Siehe: http://stackoverflow.com/questions/2127680/python-optimizing-or-least-getting-fresh-ideas-for-a-tree-generator –
Ich hatte einen Fall, wo ich am meisten nicht ändern würde von den Tupeln, aber nur ein paar von ihnen, also '_replace' ist der Weg zu gehen. Diese Antwort hat mir sehr geholfen (mehr als das offizielle Dokument). – JulienD