我正试图在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]}