Контейнеры, которые принимают хешируемые объекты (например, dict
ключи или set
элементы). Таким образом, словарь может иметь только один ключ со значением 1
, 1.0
или True
и т.д. (Примечание: разрешены несколько несколько хэш-коллизий, но эти значения считаются равными)
Мой вопрос: правильно ли определен синтаксический анализ и результирующий объект предсказуем во всех реализациях? Например, OSX Python 2.7.11 и 3.5.1 интерпретирует dict
следующим образом:
>>> { True: 'a', 1: 'b', 1.0: 'c', (1+0j): 'd' }
{True: 'd'}
В этом случае оказывается, что первый ключ и последнее значение сохраняются.
Аналогично, в случае set
:
>>> { True, 1, 1.0, (1+0j) }
set([(1+0j)])
Здесь показано, что последний элемент сохранен.
Но (как упоминалось в комментариях):
>>> set([True, 1, 1.0])
set([True])
Теперь первый в итерабеле сохраняется.
В документации отмечается, что порядок элементов (например, в dict.items
) равен undefined, однако мой вопрос относится к результату построения объектов dict
или set
.