On Mon, 07 May 2012 20:15:36 -0700 Charles Hixson <charleshi...@earthlink.net> wrote:
> class Node: > > def __init__(self, nodeId, key, value, downRight, downLeft, > parent): dirty = True > dlu = utcnow() > self.node = [nodeId, downLeft, [key], [value], > [downRight], parent, dirty, dlu] > > Note that node[3] is a list of keys (initially 1) and node[3] is a > list of values, etc. > > What I'd like to do is to be able to address them thusly: > k = node.key[2] > v = node.value[2] > but if there's a way to do this, I haven't been able to figure it > out. Any suggestions? Untested: def __init__(self, nodeId, key, value, downRight, downLeft, parent): dirty = True dlu = utcnow() self.node = [nodeId, downLeft, dict(key=value), [downRight], parent, dirty, dlu] Now you can use self.node[2][key] to get/set value. But why not make the elements of node their own attributes? Untested: def __init__(self, nodeId, key, value, downRight, downLeft, parent): self.dirty = True self.dlu = utcnow() self.nodeId = nodeId self.downLeft = downLeft self.downRight = downRight self.values = dict(key=value) self.parent = parent And then you don't have to remember that node[2] is the key/value pairs (note the typo (the two "3"s) in your original post). With each attribute in its own, well, attribute, you can always use node.values[key] to access the value associated with a particular key. HTH, Dan -- http://mail.python.org/mailman/listinfo/python-list