Re: [Python-ideas] Dict access with double-dot (syntactic sugar)

I realized that python already has a way to access the string-based members of a dict without using quotes: def expect_a_chair(chair, **kw): print "Thanks. That chair is %s." % chair if kw: for key, val in kw.iteritems(): print "I wasn't expecting the (%s) %s!" % (val, key) d = json.loads('{"chair":"comfy","inquisition":"Spanish"}') expect_a_chair(**d) try: expect_a_chair({}) except TypeError: print "No chair." The ** "operator" does this. Notice that nowhere in that python code (not counting the json) do I have to put "chair" in quotes. Honestly, this solves my current use case. I can use functions like expect_a_chair for everything I need right now. So I'm reasonably satisfied. But perhaps, if there were a quote-free way to access string-based dict items, it should be based on this. The problem is, this ** "operator" is unary, and the non-unary ** is already taken for exponentials. So, I don't have a perfect name for my proposed quoteless synonym for '["attrname"]'. My best option is '*.attrname'. Note that this could also be used for unpacking, and with defaults: d*.a #=== d["a"] d*.(x,y,z) #=== (d["x"], d["y"], d['z']) e=d*.(e=None) #like 'e=d.get("e", None)'. Does this sound worth-it to anyone? Jameson (ps. I mistakenly sent this reply to python-dev earlier; sorry, this is the right place for it. Minor edits in this version.)
participants (2)
-
Jameson Quinn
-
Paul Moore