Необходимо написать функцию на Python, просматривающую содержание словаря и возвращающую ключи тех элементов, которые являются массивами Numpy

Вернее, что-то уже написано:

def smth(t, **kwargs):
for i in enumerate(kwargs):
    if type(kwargs.get(i[1]))=="<class 'numpy.ndarray'>": print(i[1])
    

просто не работает нормально: при вводе

smth('Name', time=0, x=np.array([0, 1, 2, 3]), y=34, z=np.array([34, 57, 81]))

не выдает ровным счетом ничего. А сравниваю я именно с такой строкой, поскольку функция

def smth(t, **kwargs):
for i in enumerate(kwargs):
    print(type(kwargs.get(i[1])))

на тех же входных данных выдает:

<class 'int'>
<class 'numpy.ndarray'>
<class 'int'>
<class 'numpy.ndarray'>

Было бы здорово, если подскажете решение проблемы


Ответы (2 шт):

Автор решения: Александр

Проблема решилась заменой строчки

if type(kwargs.get(i[1]))=="<class 'numpy.ndarray'>": print(i[1])

на

if str(type(kwargs.get(i[1])))=="<class 'numpy.ndarray'>": print(i[1])

т. е. добавилась функция str()

→ Ссылка
Автор решения: Danis

чтобы проверит тип надо писать так

if type(kwargs.get(i[1])) == np.ndarray:

enumerate можно убрать

def smth(t, **kwargs):
    for key in kwargs:
        if type(kwargs[key] )==np.ndarray:
            print(key)
    
→ Ссылка