Would it shut down this particular subthread if (as the language's designer, if not its BDFL) I declared that this was an explicit design decision that I made nearly 30 years ago? I should perhaps blog about the background of this decision, but it was quite a conscious one. There really is no point in thinking that this is an accident of implementation or could be changed.
On Wed, Mar 6, 2019 at 9:10 AM Jonathan Fine <jfine2...@gmail.com> wrote: > SUMMARY: The outcome of a search for: python dict literal duplicate > keys. No conclusions (so far). > > BACKGROUND > In the thread "PEP: Dict addition and subtraction" I wrote > > > >>> {'a': 0, 'a': 1} > > {'a': 1} > > > I wonder, is this behaviour of {'a': 0, 'a': 1} documented (or tested) > > anywhere? I didn't find it in these URLs: > > https://docs.python.org/3/library/stdtypes.html#mapping-types-dict > > https://docs.python.org/3/tutorial/datastructures.html#dictionaries > > LINKS > I've since found some relevant URLs. > > [1] > https://stackoverflow.com/questions/34539772/is-a-dict-literal-containing-repeated-keys-well-defined > [2] > https://help.semmle.com/wiki/display/PYTHON/Duplicate+key+in+dict+literal > [3] https://bugs.python.org/issue26910 > [4] https://bugs.python.org/issue16385 > [5] https://realpython.com/python-dicts/ > > ANALYSIS > [1] gives a reference to [6], which correctly states the behaviour of > {'a':0, 'a':1}, although without giving an example. (Aside: Sometimes > one example is worth 50 or more words.) > > [2] is from Semmle, who provide an automated code review tool, called > LGTM. The page [2] appears to be part of the documentation for LGTM. > This page provides a useful link to [7]. > > [3] is a re-opening of [4]. It was rapidly closed by David Murray, who > recommended reopening the discussion on python-ideas. > [4] was raised by Albert Ferras, based on his real-world experience. > In particular, a configuration file that contains a long dict literal. > This was closed by Benjamin Peterson, who said that raising an error > was "out of the question for compatibility isssues". Given few use > case and little support on python-ideas,Terry Ready supported the > closure. Raymond Hettinger supported the closure. > > [5] is from RealPython, who provide online tutorials. This page > contains the statement "a given key can appear in a dictionary only > once. Duplicate keys are not allowed." Note that > {'a': 0, 'a': 1} > can reasonably be thought of as a dictionary with duplicate keys. > > NOTE > As I recall SGML (this shows my age) allows multiple entity declarations, > as in > <!ENTITY key "original"> > <!ENTITY key "updated"> > > And as I recall, in SGML the first value "original" is the one that is > in effect. This is what happens with the LaTeX command > \providecommand. > > FURTHER LINKS > [6] > https://docs.python.org/3/reference/expressions.html#dictionary-displays > [7] https://cwe.mitre.org/data/definitions/561.html # CWE-561: Dead Code > > -- > Jonathan > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/