Recursive update of arbitrarily nested dicts

Jason Orendorff jason at jorendorff.com
Sat Dec 15 16:43:37 EST 2001


> I am writing a module where I am updating nested dicts, and it has this
> method:
> 
>     def addDayToTrack(self, trackId, year, theDay, day):
>         if not self.tracks.has_key(trackId):
>             self.tracks.update({trackId:{year:{theDay:day}}})
>         elif not self.tracks[trackId].has_key(year):
>             self.tracks[trackId].update({year:{theDay:day}})
>         elif not self.tracks[trackId][year].has_key(theDay):
>             self.tracks[trackId][year][theDay] = day

  def addDayToTrack(self, trackId, year, theDay, day):
      """ Not the recursive solution you're seeking, but better anyway """
      trackDict = self.tracks.setdefault(trackId, {})
      yearDict = trackDict.setdefault(year, {})
      yearDict[theDay] = day

-- 
Jason Orendorff    http://www.jorendorff.com/





More information about the Python-list mailing list