Help with Dictionaries and Classes requested please.

Alex Martelli aleax at mac.com
Sat Aug 11 01:10:57 EDT 2007


Sion Arrowsmith <siona at chiark.greenend.org.uk> wrote:

> special_dragonfly <Dominic at PLEASEASK.co.uk> wrote:
> >        if key in FieldsDictionary:
> >            FieldsDictionary[key].append(FieldClass(*line.split(",")))
> >        else:
> >            FieldsDictionary[key]=[FieldClass(*line.split(","))]
> 
> These four lines can be replaced by:
> 
> FieldsDictionary.setdefault(key, []).append(FieldClass(*line.split(",")))

Even better might be to let FieldsDictionary be an instance of
collections.defaultdict(list) [[assuming Python 2.5 is in use]], in
which case the simpler

   FieldsDictionary[key].append(FieldClass(*line.split(",")))

will Just Work.  setdefault was a valiant attempt at fixing this
problem, but defaultdict is better.


Alex



More information about the Python-list mailing list