Как создать типизированный dict в Numba где (ключ, значение) = (str, список) - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать словарь в режиме python. Вот что у меня есть:

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

1 Ответ

0 голосов
/ 07 апреля 2020

Кажется, что нужно объявить ListType вне блока njit (по крайней мере, я не могу сделать это по-другому). Также вы должны добавлять элементы в список один за другим. Попробуйте этот код:

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]}
...