Dynamic Dictionary Creation

Scott David Daniels Scott.Daniels at Acm.Org
Sun Dec 8 15:01:59 EST 2002


How about something like:

class NoteLen(object):
     def __init__(self, ticksPerQuarterNote):
         self.TicksPerNote = ticksPerQuarterNote * 4
         self.data = {}

     def fromInt(self, denominator):
         return int(self.TicksPerNote // denominator)

     def ticks(self, name):
         try:
             return self.data[name]
         except KeyError:
             pass
         try:
             result = self.fromInt(int(name))
         except ValueError:
             # the int(name) failed, assume it is n+n+n
             parts = name.split('+')
             assert len(parts) > 1	# must have parts to work
             result = 0
             for v in [self.ticks(n) for n in parts]:
                 result += v
         self.data[name] = result
         return result

getNoteLen = NoteLen(TicksQ).ticks


-Scott David Daniels




More information about the Python-list mailing list