В Python, JavaScript, JSON (и, вероятно, других языках тоже) вам разрешено переопределить ключ в словаре буквальным образом:Почему Переопределение ключа в словаре литерале Разрешенный
{ "foo" : 1, "foo" : 2 }
Это похоже это привело бы к непредсказуемым результатам, и я не могу себе представить, почему человек будет делать это намеренно. Есть ли веская причина, что это разрешено?
Возможно, это потому, что словарь находится в процессе создания, поэтому поиск каждой клавиши, видимой, если она уже существует, слишком медлительна. – martineau
Простота и согласованность. Изменение ключа/значения разрешено вообще, и порядок корректно определен в случае литерала. Это позволяет более легко и естественно писать код, который генерирует, скажем, JSON из разрозненных источников. – pvg
Есть, вероятно, веские причины, но, возможно, вам стоит перефразировать ваш вопрос относительно того, было бы возможно или желательно обнаружить дубликаты и какие ошибки было бы целесообразно бросить в этом случае. Например, это, вероятно, выходит за рамки грамматики CF (синтаксический анализатор), и, как говорили другие, вам нужно будет создать хеш-таблицу для обнаружения дубликатов, так что это не делается для вас. –