vsoler wrote: > Say that "m" is a tuple of 2-tuples > > m=(('as',3), ('ab',5), (None, 1), ('as',None), ('as',6)) > > and I need to build a "d" dict where each key has an associated list > whose first element is the count, and the second is the sum. If a 2- > tuple contains a None value, it should be discarded. > > The expected result is: > d={'as':[2, 9], 'ab': [1,5]} > > How should I proceed? So far I have been unsuccessful. I have tried > with a "for" loop. > > Thank you for your help
Here's a fairly simple-minded approach using a defaultdict, which calls the dflt() function to create a value when the key is absent. >>> from collections import defaultdict >>> def dflt(): ... return [0, 0] ... >>> m = (('as',3), ('ab',5), (None, 1), ('as',None), ('as',6)) >>> d = defaultdict(dflt) >>> for key, n in m: ... if key is not None and n is not None: ... c, t = d[key] ... d[key] = [c+1, t+n] ... >>> d defaultdict(<function dflt at 0x7f0bcb1b0ed8>, {'as': [2, 9], 'ab': [1, 5]}) >>> regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 See PyCon Talks from Atlanta 2010 http://pycon.blip.tv/ Holden Web LLC http://www.holdenweb.com/ UPCOMING EVENTS: http://holdenweb.eventbrite.com/ -- http://mail.python.org/mailman/listinfo/python-list