Martin Walsh wrote: > Rilindo Foster wrote: >> Scratch that, I'm a dork: >> >> OrderDict[(o[0])] = OrderDict.get(o[0],0) + float(o[1]) >> >> http://www.faqts.com/knowledge_base/view.phtml/aid/4571/fid/541 >> >> :D >> > > For this case you might also be interested in collections.defaultdict, > added in python 2.5 I believe. > > from collections import defaultdict > > orders = defaultdict(float) > orders[o[0]] += float(o[1]) > > HTH, > Marty
It is so unlike me to respond without the obligatory doc reference: http://docs.python.org/lib/defaultdict-objects.html http://docs.python.org/lib/defaultdict-examples.html FWIW, you can also accomplish something similar by subclassing dict and defining a __missing__ method (also added in 2.5). Something like this (untested): class OrderDict(dict): def __missing__(self, key): return 0.0 orders = OrderDict() orders[o[0]] += float(o[1]) See http://docs.python.org/lib/typesmapping.html Note that it doesn't actually update the dict with any access as defaultdict would... In [3]: orders = defaultdict(float) In [4]: orders['somekey'] Out[4]: 0.0 In [5]: orders Out[5]: defaultdict(<type 'float'>, {'somekey': 0.0}) In [6]: orders = OrderDict() In [7]: orders['somekey'] Out[7]: 0.0 In [8]: orders Out[8]: {} HTH, Marty _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor