Ответ 1
Нет проблем с использованием float как ключей dict.
Просто round(n, 1)
их, чтобы нормализовать их в вашем ключевом пространстве. например.
>>> hash(round(6.84, 1))
3543446220
>>> hash(round(6.75, 1))
3543446220
Я разрабатываю класс для анализа микротитрационных планшетов. Образцы описываются в отдельном файле, и записи используются для упорядоченного словаря. Одним из ключей является pH, который обычно указывается как float. например, 6.8
Я мог бы импортировать его как десятичное с Decimal('6.8')
, чтобы избежать поплавка как ключа dict. Другим решением было бы заменить точку, например, p как 6p8, или написать 6p8 в моем описании образца и, следовательно, устранить проблему в начале. Но это может вызвать проблемы позже, так как я не могу рассчитать pH 6p8 на моих рисунках.
Как бы вы решили эту проблему?
Нет проблем с использованием float как ключей dict.
Просто round(n, 1)
их, чтобы нормализовать их в вашем ключевом пространстве. например.
>>> hash(round(6.84, 1))
3543446220
>>> hash(round(6.75, 1))
3543446220
Возможно, вы хотите усечь ваш float перед использованием, это ключ?
Может быть, так:
a = 0.122334
round(a,4) #<-- use this as your key?
Теперь ваш ключ:
0.1223 # still a float, but you have control over its quality
Вы можете использовать его следующим образом:
dictionary[round(a,4)]
для получения ваших значений