Необходимо написать функцию на 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)