Почему python позволяет создавать словари с дублирующимися ключами

Словари в python должны иметь уникальные ключи. Почему вам разрешено это делать …

d = {'a' : 'b', 'a' : 'c'} 

Разве это не должно породить какую-то ошибку?

2 Solutions collect form web for “Почему python позволяет создавать словари с дублирующимися ключами”

 >>> d = {'a' : 'b', 'a' : 'c'} >>> d {'a': 'c'} 

Нет, это только вы инициализируете dict, используя уже существующий ключ, который просто переписывает текущее значение существующего ключа.

 >>> dis.dis("d = {'a' : 'b', 'a' : 'c'}") 1 0 BUILD_MAP 2 3 LOAD_CONST 0 ('b') 6 LOAD_CONST 1 ('a') 9 STORE_MAP 10 LOAD_CONST 2 ('c') 13 LOAD_CONST 1 ('a') 16 STORE_MAP 17 STORE_NAME 0 (d) 20 LOAD_CONST 3 (None) 23 RETURN_VALUE >>> dis.dis("d={};d['a']='b';d['a']='c'") 1 0 BUILD_MAP 0 3 STORE_NAME 0 (d) 6 LOAD_CONST 0 ('b') 9 LOAD_NAME 0 (d) 12 LOAD_CONST 1 ('a') 15 STORE_SUBSCR 16 LOAD_CONST 2 ('c') 19 LOAD_NAME 0 (d) 22 LOAD_CONST 1 ('a') 25 STORE_SUBSCR 26 LOAD_CONST 3 (None) 29 RETURN_VALUE 

Как вы можете видеть, два способа инициализации несколько похожи: первое ключевое значение сохраняется сначала, а затем второе.

Это не так. Он просто перезаписывает ключи.

 >>> d = {'a' : 'b', 'a' : 'c'} >>> d {'a': 'c'} 

Ошибка перезаписать ключ? Это не должно. В противном случае у вас будет миллион ошибок при попытке обновления содержимого в словаре. Причина, почему я думаю, что нет ошибки, это (объяснение кода на английском языке):

 d - словарь.
 есть ключ и значение.  ('a' и 'b')
 Соедините их и введите их, сохраняя их.
 Новая запись ('a' и 'c')
 ключ «а» уже существует;  обновить.
  • Переименование файлов в соответствии с набором правил
  • Python "SyntaxError: не-ASCII-символ '\ xe2' в файле"
  • Как я могу получить значения локалей функции после ее выполнения?
  • Как вы переводите строки в padded binary в python?
  • Что такое выражение в Python?
  • ИЛИ поведение в python:
  • Как перезапустить программу на основе ввода пользователем?
  • Python: Как я могу использовать itertools?
  •  
    Interesting Posts for Van-Lav

    Как проверить, невозможно ли продолжить прокрутку вниз, используя Selenium

    улавливание исключений SQLAlchemy

    Python: ImportError: /usr/local/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS2_Replace

    рок, бумага, scissor-python-code. упростить

    Правильный способ transaction.rollback () с исключением исключения в django

    Поведение Python: id () в интерпретаторе

    Чтение метаданных SHOUTcast / Icecast из радиопотока с помощью Python

    Python MultiPart POST Malformed

    Python: самый идиоматический способ конвертировать None в пустую строку?

    Ошибка: значение истинности серии неоднозначно. Python & Pandas

    Matplotlib: нарисуйте выделенную область в форме прямоугольника с помощью мыши

    Как использовать капли в слое Caffe Python, и когда происходит их обучение?

    Создайте новый DataFrame из существующего с столбцом, содержащим список (заполните новые строки, используя список)

    объединить два массива и сортировать

    Как выполнить поиск с помощью консоли python

    Python - лучший язык программирования в мире.