我正在尝试以 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)
似乎需要在 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)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |