Причиной такого поведения является то, что Python использует хеш-таблицы для реализации словаря: https://en.wikipedia.org/wiki/Hash_table#Open_addressing
Позиция ключ определяется его адресом памяти. Если вы знаете память повторного использования Python для некоторых объектов:
>>> a = 'Hello world'
>>> id(a)
140058096568768
>>> a = 'Hello world'
>>> id(a)
140058096568480
Вы можете видеть, что объект a имеет разные адреса каждый раз, когда он инициализирован.
Но для небольших целых чисел это не изменение :
>>> a = 1
>>> id(a)
40060856
>>> a = 1
>>> id(a)
40060856
Даже если мы создадим второй объект с другим именем, он будет таким же:
>>> b = 1
>>> id(b)
40060856
Этот подход позволяет сэкономить память, которую использует интерпретатор Python.
В JSBin, на которую вы ссылались, вы не импортировали jQuery, но, похоже, вы используете селектор jQuery для установки содержимого элементов DOM #skip-result
и #distinct-result
. Это выдаст ошибку.
Если вместо этого вы изменили их, установив свойство innerHTML
, которое, по-видимому, уже делает одна подписка, вы должны получить ожидаемое поведение.
.subscribe(s => {
skipResult.innerHTML = 'Skip Value is ' + s
})
После второго просмотра ваша разметка закрывается неправильно. В частности, #skip-result
делается потомком #distinct-result
.