[Python-ideas] Adding "+" and "+=" operators to dict
Chris Angelico
rosuav at gmail.com
Sat Feb 14 06:28:36 CET 2015
More information about the Python-ideas mailing list
Sat Feb 14 06:28:36 CET 2015
- Previous message: [Python-ideas] Adding "+" and "+=" operators to dict
- Next message: [Python-ideas] Adding "+" and "+=" operators to dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Feb 14, 2015 at 3:38 PM, Chris Barker <chris.barker at noaa.gov> wrote: > In [25]: (l1 + l2) += [3] > File "<ipython-input-25-b8781c271c74>", line 1 > (l1 + l2) += [3] > SyntaxError: can't assign to operator > > which makes sense -- the LHS is an expression that results in a list, but += > is trying to assign to that object. HOw can there be anything other than a > single object on the LHS? You'd have to subscript it or equivalent. >>> options = {} >>> def get_option_mapping(): mode = input("Pick an operational mode: ") if not mode: mode="default" if mode not in options: options[mode]=defaultdict(int) return options[mode] >>> get_option_mapping()["width"] = 100 Pick an operational mode: foo >>> options {'foo': defaultdict(<class 'int'>, {'width': 100})} Sure, you could assign the dict to a local name, but there's no need - you can subscript the return value of a function, Python is not PHP. (Though, to be fair, PHP did fix that a few years ago.) And if it works with regular assignment, it ought to work with augmented... and it does: >>> get_option_mapping()["width"] += 10 Pick an operational mode: foo >>> get_option_mapping()["width"] += 10 Pick an operational mode: bar >>> options {'foo': defaultdict(<class 'int'>, {'width': 110}), 'bar': defaultdict(<class 'int'>, {'width': 10})} The original function gets called exactly once, and then the augmented assignment is done using the resulting dict. ChrisA
- Previous message: [Python-ideas] Adding "+" and "+=" operators to dict
- Next message: [Python-ideas] Adding "+" and "+=" operators to dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list