Stephen J. Turnbull
> d = {first : first, last, addr1, addr2}
I'm not a huge fan of this solution. It feels a bit like a hack instead of
an intended syntax. Since prefixing characters on strings is already a
thing, I lean more towards that solution. It's slightly easier to search
(e.g. if the notation was d{literal1, literal2, etc}, one might search for
"python d-dict"). However, If the above notation gains favor, perhaps it
would be better to allow an empty ':' followed by a comma:
d = {:, first, last, addr1, addr2}
I don't much like the Perlyness of that syntax, but it's similar to using a
prefix and it might lead to more explicit empty literals like {:} and {,}
for dict and set respectively. I'm pretty sure that notation for empty
literals has been discussed and rejected before, so I apologize if this
brings up well-trodden ground. I'm pretty neutral on the proposal in
general.
It may also be possible to add a constructor to dict like:
d = dict.from_locals('first', 'last', 'addr1', 'addr2')
d['tel'] = '123-456-789'
It might require a bit of stack inspection or some other magic, but it
should be possible. It might be difficult for IDEs to recognize and hint
and it might also be a blind-spot for re-factoring (if you change the name
of a local variable).
On Wed, Jun 10, 2020 at 3:06 AM Stephen J. Turnbull <
[email protected]> wrote:
> Chris Angelico writes:
> > On Wed, Jun 10, 2020 at 1:15 PM Stephen J. Turnbull
> > <[email protected]> wrote:
> > >
> > > Executive summary:
> > >
> > > Dicts are unordered, so we can distinguish dict from set by the first
> > > item (no new notation), and after that default identifiers to (name :
> > > in-scope value) items.
> >
> > Be careful with this assumption. Python's dictionaries DO retain
> > order,
>
> Thank you for the reminder! I did forget that point.
>
> > even if you can't easily talk about "the fifth element" [1], so
> > anything that imposes requirements on the entry listed
> > syntactically first may have consequences.
>
> No requirements imposed! If iteration order matters and you want to
> take advantage of abbreviation, you might have to write
>
> d = {first : first, last, addr1, addr2, tel='123-456-789'}
>
> but frequently it would just work naturally:
>
> d = {first : first, last, addr1, addr2}
>
> Admittedly this distinction may be even more subtle than grit on Tim's
> screen, or randomizing the hash seed per process. And I suspect that
> people who want this feature will prefer the d{} notation for
> consistency inside the braces.
>
> Steve
> _______________________________________________
> Python-ideas mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/[email protected]/message/ENXYVRXOAEOBWHN6SQK5K4IJUTRHHXLB/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/F2DDRMDOQOMCWATOV2CN3AZTYT3FPVTA/
Code of Conduct: http://python.org/psf/codeofconduct/