如何在Numba中创建一个类型化的dict,其中(key,value)=(str,list)



我正试图在nopython模式下创建一个字典。这就是我所拥有的:

import numba
@numba.njit()
def func():
d = numba.typed.Dict.empty(
key_type=numba.types.unicode_type,
value_type=numba.ListType(np.float64)
)
d["a"] = [1, 1]
return d
print(func())

错误:

Invalid use of Function(<class 'numba.types.containers.ListType'>) with argument(s) of type(s): (Function(<class 'float'>))
* parameterized
In definition 0:
TypeError: typer() takes 0 positional arguments but 1 was given

似乎需要在njit块之外声明ListType(至少我不能以不同的方式声明(。此外,您还必须将元素一个接一个地添加到列表中。试试这个代码:

import numba
list_type = numba.types.ListType(numba.types.float64)
@numba.njit()
def func():
d = numba.typed.Dict.empty(
key_type=numba.types.unicode_type,
value_type=list_type
)
d["a"] = numba.typed.List.empty_list(numba.types.float64)
d["a"].append(1)
d["a"].append(1)
return d
print(func())

输出:

{a: [1.0, 1.0]}

相关内容

最新更新