Complex Nested Dictionaries

Scott David Daniels Scott.Daniels at Acm.Org
Sat Feb 21 19:31:03 CET 2004

T. Earle wrote:
> Russell,
>>If you really only want to look up data by headline, then a dictionary
>>of dictionaries or nested lists or some other kind of collection is easy
>>and should suffice. For instance:
>>warndict["High Wind Warning"] = (
>>    (time1, {
>>        state1: (zone1, zone2, zone3),
>>        state2: (zone1, zone3),
>>    }),
>>    (time2, {...}),
> This definitely seems to be the structure I've been looking for or at least
> have in mind.  Since I'm no expert, could offer some code examples on how to
> create this structure on the fly?
For something very much (but not quite) like the above:

warndict['High Wind Warning'] = {
     time1: {
         state1: [zone1, zone2, zone3],
         state2: [zone1, zone3]},
     time2: {...},

can be built with something like:
warndict = {}
for headline, time, state, zone in somesource:
     timedict = warndict.setdefault(headline, {})
     statedict = timedict.setdefault(time, {})
     stateentry = statedict.setdefault(state, [])

> My first inclination was to go with a database; however, I thought about it
> and concluded there may be too much variability each time the program is
> executed.  For example, there will be times when there are no headlines;
> other times, there will be numerous headlines.  Because of this variability,
> the database would have to be created from scratch each time the program is
> ran.  As a result, would a database still be the right choice?
It really depends on the volume of data and the kinds of searches.
Anything under a thousand or so entries will be searchable by simple
brute force in reasonable time, so internal data structures may well
be the way to go.

-Scott David Daniels
Scott.Daniels at Acm.Org

More information about the Python-list mailing list