Thus spoke Dennis Lee Bieber (on 2006-06-18 06:29): > On Sun, 18 Jun 2006 03:12:23 +0200, Mirco Wahab > <[EMAIL PROTECTED]> declaimed the following in comp.lang.python: >> - you have to explicitly instantiate a dictionary value >> (with 0) if/before you want in-place add to it (why is that?) > Uhm... Not quite... > ... > dict.get(key, default) > > returns the value associated by key, IFF key exists in the > dictionary, otherwise it returns the value defined for default.
Thanks, Dennis, for your help on this part I bragged about. Now the extractor loop, according to your suggestion, can be written shorter: for rule in filter: k = re.search(r'\((.+)\)', rule) # pull out variable names ->k if k.group(1): # pull their values from text varname[k.group(1)] = varname.get(k.group(1), 0) + float( \ re.search( re.sub(r'\((.+)\)', varscanner, rule), \ example ).group(1) ) # use regex in modified 'rule' For the other issue I stumbled upon: - no DWIM-ism (do what I mean) on 'value' addition a = '1' a += '1.1111' print a will print 11.1111 and not 2.1111, as in 'dynamically typed', 'operator based' languages. (maybe the lack of a simple string-concatenation operator is the reason?) whereas: a = '1' a += 1.1111 print a will fail magnificently. These thing would come handy when working with text/table driven computations (as above) How could one approach these things without needing to get too explicitly about 'type conversions' (Python is supposed to be 'dynamically typed'?). Regards & thanks Mirco -- http://mail.python.org/mailman/listinfo/python-list