Below code works with @jit, but does not work with jitclass on Dict.empty. Is it that jitclass does not support the dictionary with tuple key while @jit supports it?
from numba import types, njit
from numba.experimental import jitclass
from numba.typed import Dict
from numba import int64, float64
spec = [
#key : time, s
('values', types.DictType(types.Tuple((int64, types.unicode_type)), float64))
]
@jitclass(spec)
class Data(object):
def __init__(self):
self.values = Dict.empty(
key_type=types.Tuple((int64, types.unicode_type)),
value_type=float64,
)
def add_value(self, time: int, s: str, value: float):
self.values[(time, s)] = value
def get_value(self, time: int, s: str):
return self.values.get((time, s), None)
def iterate_values(self):
for (time, s), value in self.values.items():
print(f"At time {time}, s {s} had a value of {value}")
# Instantiate the class
data = Data()
# Add some sample data
data.add_value(20230530, "s", 150.45)
print(data.get_value(20230530, "s")) # Outputs: 150.45
# Iterate over all values
data.iterate_values()