On Fri, Sep 18, 2020 at 11:04 PM Ricky Teachey
On Fri, Sep 18, 2020, 8:34 AM Chris Angelico
wrote: On Fri, Sep 18, 2020 at 10:26 PM Ricky Teachey
wrote: On Fri, Sep 18, 2020, 8:17 AM Ricky Teachey
wrote: Why not just grow a parse method on str that returns a dict and do it this way?
q = "{a} {b}" p = "1 2" (a, b) = q.parse(p)
Sorry that should have been:
(a, b) = q.parse(p).values()
You're using a dictionary as if it were a tuple. That's going to cause a LOT of pain when someone does something like:
a, b = "{b} {a}".parse(p).values()
and they come out in the wrong order. Bad bad bad idea. Don't have names if they're going to be pure lies.
ChrisA
I'm not sure I understand the point you are making here since dictionaries have preserved order since python 3.6...?
The same problem exists here:
a, b = 2, 1 assert a == 1. # whoops got the order wrong
But you don't have any sort of lie in the RHS about the name mapping. It's just a sequence, so people will expect it to be a sequence. If the parser incorporates names, people will expect it to use those names. Why have it return a dictionary if you're going to assume and mandate that it be a sequence? ChrisA