如何在 Numba 中创建类型化字典,其中 (key, value) = (str, list)

Gla*_*ery 2 numba

我正在尝试以 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())
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

Zuk*_*uku 5

似乎需要在 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())
Run Code Online (Sandbox Code Playgroud)

输出:

{a: [1.0, 1.0]}
Run Code Online (Sandbox Code Playgroud)