Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Float values as dictionary key

I am developing a class for the analysis of microtiter plates. The samples are described in a separate file and the entries are used for an ordered dictionary. One of the keys is pH, which is usually given as float. e.g 6.8

I could import it as decimal with Decimal('6.8') in order to avoid a float as dict key. Another solution would be to replace the dot with e.g p like 6p8 or to write 6p8 in my sample description and therefore eliminating the problem at the beginning. But this would cause troubles later on since i cannot plot pH of 6p8 in my figures.

How would you solve this issue?

like image 768
Moritz Avatar asked May 18 '14 11:05

Moritz


People also ask

Can a float be a dictionary key?

Second, a dictionary key must be of a type that is immutable. For example, you can use an integer, float, string, or Boolean as a dictionary key.

Can we use float as key in Python?

There's no problem using floats as dict keys.

Can a list be a key in a dictionary Python?

We can use integer, string, tuples as dictionary keys but cannot use list as a key of it .


2 Answers

There's no problem using floats as dict keys.

Just round(n, 1) them to normalise them to your keyspace. eg.

>>> hash(round(6.84, 1)) 3543446220 >>> hash(round(6.75, 1)) 3543446220 
like image 166
John La Rooy Avatar answered Oct 06 '22 00:10

John La Rooy


Perhaps you want to truncate your float prior to using is as key?

Maybe like this:

a = 0.122334 round(a, 4)       #<-- use this as your key? 

Your key is now:

0.1223           # still a float, but you have control over its quality 

You can use it as follows:

dictionary[round(a, 4)]    

to retrieve your values

like image 40
Reblochon Masque Avatar answered Oct 05 '22 22:10

Reblochon Masque