Попытка добавить функциональность, чтобы выбрать вариант

Проблема заключается в том, что NaN не равен самому себе, как определено в стандарте IEEE для чисел с плавающей запятой:

>>> float("nan") == float("nan")
False

Когда словарь ищет ключ, он примерно делает это:

  1. Вычислить хэш ключа для поиска.
  2. Для каждого ключа в dict с тем же хэшем проверьте, соответствует ли он ключевому слову, который нужно найти. Эта проверка состоит из a. Проверка на идентификацию объекта: если ключ в словаре и клавиша для поиска - это тот же объект, что и указатель оператора is, ключ был найден. б. Если первая проверка не удалась, проверьте равенство, используя оператор __eq__.

Первый пример завершается успешно, так как np.nan и np.nan являются одним и тем же объектом, поэтому это не имеет значения они не сравниваются с равными:

>>> numpy.nan is numpy.nan
True

Во втором случае np.float64(np.nan) и np.float64(np.nan) не являются одним и тем же объектом - два вызова конструктора создают два разных объекта:

>>> numpy.float64(numpy.nan) is numpy.float64(numpy.nan)
False

Поскольку объекты также не сравниваются одинаково, словарь завершает, что ключ не найден и выбрасывает KeyError.

Вы даже можете сделать это:

>>> a = float("nan")
>>> b = float("nan")
>>> {a: 1, b: 2}
{nan: 1, nan: 2}

В заключение, кажется, более разумная идея избегать NaN в качестве словарного ключа.

0
задан Mbotet 19 March 2019 в 09:11
поделиться

1 ответ

Хотя исправление функции изменения так, что она вызывается для выбора, а не для опции, важно, ваша проблема - сама выбранная опция по умолчанию. Как вы упомянули, если им нужен первый вариант, им нужно выбрать что-то еще, чтобы вызвать функцию изменения.

Я бы порекомендовал добавить «пустую» опцию в качестве первой опции и установить ее как выбранную.

var  $select_ex = $("#select_ex");  

.done(result){
      $select_ex.empty().append("<option value='0'>Select Your Ex Below!</option>");
      $.each(result.data,function (){
        $select_ex.append("<option value...... ></option>");
      });

      $select_ex.val("0");
    }

    $select_ex.change(function_2);
0
ответ дан imvain2 19 March 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: