0

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()
tompal18
  • 1,164
  • 2
  • 21
  • 39

0 Answers0