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