[Python-ideas] dictionary constructor should not allow duplicate keys
Rob Cliffe
rob.cliffe at btinternet.com
Tue May 3 04:00:56 EDT 2016
On 03/05/2016 08:22, Michel Desmoulin wrote:
> That would introduce a very weird special case. All those would work:
>
> foo = 1
> bar = "1"
>
> {1: True, 2 - 1: True, foo: True, int(bar): True, int("1"): True, **{1:
> True}}
>
> But not this:
>
> {1: True, 1: True}
Perfectly true.
>
> It would be very confusing.
It could conceivably confuse someone, but the example quoted by the OP
with all literal keys is realistic and yours is contrived.
There is practical benefit in spotting duplicate literal keys, if it can
be done with either an error or a warning (whether at compile time or
run time).
There is even a kind of analogy:
dict(lion=1, lion=2)
SyntaxError: keyword argument repeated
Is that also confusing?
More information about the Python-ideas
mailing list